function jsaSetCreditosADespedidos($credito, $fecha, $observaciones)
{
    $msg = "";
    $xCred = new cCredito($credito);
    $xCred->init();
    $xdat = new cFecha(0);
    $fecha = $xdat->getFechaISO($fecha);
    $xCred->init();
    $socio = $xCred->getClaveDePersona();
    $xSoc = new cSocio($socio);
    $xSoc->init();
    $xCred->setCambioProducto(CREDITO_PRODUCTO_DESTINO_DESCARTADOS);
    $xCred->setResetPersonaAsociada($fecha, $observaciones);
    //Agregar operacion de desvinculacion
    $xRe = new cReciboDeOperacion(RECIBOS_TIPO_ESTADISTICO, false, DEFAULT_RECIBO);
    $xRe->init();
    $xRe->setNuevoMvto($fecha, $xCred->getSaldoActual(), OPERACION_CLAVE_DESVINCULACION, $xCred->getPeriodoActual(), "", 1, false, $socio, $credito, $fecha);
    $xRe->setFinalizarRecibo();
    $msg .= $xSoc->getMessages(OUT_TXT);
    $msg .= $xCred->getMessages(OUT_TXT);
    $msg .= $xRe->getMessages(OUT_TXT);
    $xRN = new cReglaDeNegocio();
    $xEmp = new cEmpresas($xCred->getClaveDeEmpresa());
    $xEmp->init();
    $oP = $xCred->getOPersona();
    $xRN->setVariables(array("nombre_de_persona" => $oP->getNombreCompleto(), "mensaje" => $observaciones, "saldo_del_credito" => $xCred->getSaldoActual(), "nombre_de_la_empresa" => $xEmp->getNombreCorto()));
    $xRN->setExecuteActions($xRN->reglas()->RN_NOMINA_AL_DESPEDIR);
    $xF = new cFileLog();
    $xF->setWrite($msg);
    $xF->setClose();
    return $xF->getLinkDownload("Descarga de Log");
}
function jsaGetReciboEnSesion($ctrl)
{
    if (isset($_SESSION["recibo_en_proceso"])) {
        $recibo = $_SESSION["recibo_en_proceso"];
        $xRec = new cReciboDeOperacion(200, false, $recibo);
        $xRec->setNumeroDeRecibo($recibo, true);
        $xRec->setGenerarPoliza();
        $xRec->setForceUpdateSaldos();
        $xRec->setFinalizarRecibo(true);
    }
    return "<input type=\"button\" value=\"Imprimir el Recibo # " . $_SESSION["recibo_en_proceso"] . "\" onclick=\"cImprimirRecibo(" . $_SESSION["recibo_en_proceso"] . ")\" id=\"idButtonGo\" />";
}
$idrecibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaop, 1, 12, "CIERRE_DE_COLOCACION_{$fechaop}", DEFAULT_CHEQUE, DEFAULT_TIPO_PAGO, DEFAULT_RECIBO_FISCAL, DEFAULT_GRUPO);
$xRec->setNumeroDeRecibo($idrecibo);
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\t" . EACP_NAME . " \r\n";
$messages .= "=========================\t\t" . getSucursal() . " \r\n";
$messages .= "=======================================================================================\r\n";
$messages .= "=========================\t\tINICIANDO EL CIERRE DE COLOCACION ====================\r\n";
$messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
//reconstruir db de pagos
$ql->setRawQuery("CALL `proc_historial_de_pagos` ");
$xCUtils = new cUtileriasParaCreditos();
$messages .= $xCUtils->setEstatusDeCreditos($idrecibo, $fechaop, false, true);
if (date("Y-m-t", strtotime($fechaop)) == date("Y-m-d", strtotime($fechaop))) {
    $messages .= $xCUtils->setGenerarMvtoFinDeMes($xF->getDiaInicial(), $xF->getDiaFinal());
}
if (CREDITO_CIERRE_FORZAR_DEVENGADOS == true) {
    $messages .= $xCUtils->setReestructurarSDPM_Planes(true, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setReestructurarSDPM(true, false, false, false, false, $xF->getDiaInicial(), false);
    $messages .= $xCUtils->setRegenerarInteresDevengado(false, $xF->get(), $xF->get());
}
$messages .= $xCUtils->setAcumularIntereses();
$xRec->setFinalizarRecibo(true);
$xLog->setWrite($messages);
$xLog->setClose();
if (ENVIAR_MAIL_LOGS == true) {
    $xLog->setSendToMail("TR.Eventos del Cierre del colocacion");
}
if ($parser != false) {
    header("Location: ./cierre_de_captacion.frm.php?s=true&k=" . $key . "&f={$fechaop}");
}
//}
 /**
  * Funcion que asiste en la Ministracion del Credito
  */
 function setMinistrar($recibo_fiscal, $cheque, $monto_cheque = 0, $cuenta_cheques = false, $cheque2 = 0, $cuenta_cheques2 = 0, $observaciones = "", $fecha = false, $recibo = false, $tipo_de_pago = TESORERIA_PAGO_CHEQUE)
 {
     $sucess = true;
     $monto_cheque = $monto_cheque == 0 ? $this->getMontoAutorizado() : $monto_cheque;
     $cuenta_cheques = $cuenta_cheques == false ? DEFAULT_CUENTA_BANCARIA : $cuenta_cheques;
     $cheque = setNoMenorQueCero($cheque);
     $xSocio = new cSocio($this->mNumeroSocio);
     $xSocio->init();
     //Corrige la Inicializacion del credito
     if (!isset($this->mNumeroSocio) or $this->mNumeroSocio == 1) {
         $this->init();
     }
     $DIngreso = $xSocio->getDatosDeIngreso_InArray();
     $msg = "";
     //$tipo_de_pago			= TESORERIA_PAGO_CHEQUE;
     $recibo = setNoMenorQueCero($recibo);
     $DConvenio = $this->getDatosDeProducto();
     $idsolicitud = $this->mNumeroCredito;
     $solicitud = $this->mNumeroCredito;
     /* ------------------------------ obtiene el Monto Autorizado ---------------------------------- */
     $dsol = $this->getDatosDeCredito();
     $montoaut = $this->getMontoAutorizado();
     // $dsol["monto_autorizado"];	// Monto Autorizado
     $fvcred = $dsol["fecha_vencimiento"];
     $modpagos = $this->getPeriocidadDePago();
     $tasacred = $this->getTasaDeInteres();
     $totalop = $montoaut;
     $tipoaut = $dsol["tipo_autorizacion"];
     $socio = $this->mNumeroSocio;
     $intdi = $dsol["interes_diario"];
     $diasa = $dsol["dias_autorizados"];
     $tipoconvenio = $dsol["tipo_convenio"];
     $elgrupo = $dsol["grupo_asociado"];
     $grupo = $elgrupo;
     $idsocio = $socio;
     $fecha_propuesta = $dsol["fecha_ministracion"];
     $tasa_ordinaria_de_interes = $tasacred;
     $monto_autorizado_a_ministrar = $dsol["monto_autorizado"];
     $grupo = $this->mGrupoAsociado;
     if ($fecha == false) {
         $fecha = $this->mFechaOperacion;
     }
     $socio = $this->mNumeroSocio;
     //Valores conservados
     $fechavcto = $fvcred;
     $diasaut = $diasa;
     $intdiario = $intdi;
     /**
      * Corrige la opcion de que el Cheque es Igual a Cero
      */
     if ($monto_cheque == 0) {
         $monto_cheque = $montoaut;
     }
     //Corrige el dato de recibo no valido
     if ($recibo <= 0 and setNoMenorQueCero($this->mReciboDeOperacion) > 0) {
         $recibo = $this->mReciboDeOperacion;
     }
     /*	--------------------------------------------------------------------------------------------------------- */
     $OConv = $this->getOProductoDeCredito($tipoconvenio);
     if ($this->mForceMinistracion == false) {
         // Checa si el credito ya fue Ministrado
         //Modificar
         $montomin = $this->getSumMovimiento(OPERACION_CLAVE_MINISTRACION);
         if ($montomin > 1) {
             $msg .= "ERROR\tEl credito se ha ministrado de forma parcial / Total, o se ha forzado su edicion; el Monto Ministrado es {$montomin} \r\n";
             $sucess = false;
         }
     }
     // verificar si tiene aportaciones sociales
     if ($this->mForceMinistracion == false) {
         $aportaciones = $xSocio->getAportacionesSociales();
         $cuotas = $DIngreso["parte_social"] + $DIngreso["parte_permanente"];
         if ($aportaciones < $cuotas) {
             $msg .= "ERROR\tNo ha Pagado sus Cuotas Sociales por {$cuotas}, ha pagado {$aportaciones} \r\n";
             $sucess = false;
         }
     }
     // verificar si pago su fondo de defuncion. // SI ES DIFERENTE A AUTOMATIZADO
     if ($this->mForceMinistracion == false) {
         $fondo_def_ob = $DConvenio["monto_fondo_obligatorio"];
         $fondo_def_pag = $xSocio->getFondoDeDefuncion();
         if ($fondo_def_pag < $fondo_def_pag) {
             $msg .= "ERROR\tNo ha Pagado sus Fondo de Defuncion por {$fondo_def_pag}, ha pagado {$fondo_def_pag} \r\n";
             $sucess = false;
         }
     }
     // condiciones del credito autorizado por sesion de credito.
     //si el convenio Aplica Gtos Notariales
     $aplica_gtos_not = $DConvenio["aplica_gastos_notariales"];
     if ($aplica_gtos_not == 1 and $this->mForceMinistracion == false) {
         $gastos_not_pagados = $this->getPagoDeGastosNotariales();
         if ($gastos_not_pagados < TOLERANCIA_SALDOS) {
             $msg .= "ERROR\tNo ha Pagado sus Gastos Notariales\r\n";
             $sucess = false;
         }
     }
     // verificar si tiene garantia liquida
     $porc_garantia_liquida = $OConv->getTasaDeGarantiaLiquida();
     if ($porc_garantia_liquida > 0 and $this->mForceMinistracion == false) {
         $msg .= "WARN\tLa Garantia Liquida es de {$porc_garantia_liquida} sobre el Monto Autorizado\r\n";
         if ($OConv->getEsProductoDeGrupos() == true) {
             $condicionante_de_garantia_liquida = " (`socios_general`.`grupo_solidario` = {$elgrupo}) ";
             $msg .= "WARN\tLa Garantia Liquida es valuado por GRUPO \r\n";
         } else {
             $condicionante_de_garantia_liquida = " (`socios_general`.`codigo` = {$idsocio})";
             $msg .= "WARN\tLa Garantia Liquida es valuado por SOCIO \r\n";
         }
         $tgtia = $montoaut * $porc_garantia_liquida;
         $subproducto_de_ahorro_inicial = CAPTACION_PRODUCTO_GARANTIALIQ;
         $sqlSUMDepInicial = "\n\t\t\t\t\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\t\t\t\t\t`socios_general`.`grupo_solidario`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tSUM(`captacion_cuentas`.`saldo_cuenta`) AS 'sumas'\n\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t`socios_general` `socios_general`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `socios_general`.`codigo` = `captacion_cuentas`.`numero_socio`\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t\t(`captacion_cuentas`.`tipo_subproducto` ={$subproducto_de_ahorro_inicial})\n\t\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t\t{$condicionante_de_garantia_liquida}\n\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\t\t\t\t\t`socios_general`.`grupo_solidario`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.`tipo_cuenta` ";
         $garliq = mifila($sqlSUMDepInicial, "sumas");
         if ($garliq < $tgtia - TOLERANCIA_SALDOS) {
             $msg .= "ERROR\tNo ha depositado el su totalidad la Garantia Liquida, ha Depositado {$garliq} de un total de {$tgtia} \r\n";
             $msg .= "WARN\tRecuerde que el DEPOSITO DE LA GARANTIA LIQUIDA se efectua en el Modulo de Captacion \r\n";
             $sucess = false;
         }
     }
     //END: verificar Garantia
     // VERIFICA LA GARANTIA SEGUN TIPO CONVENIO.- La seleccion se hace segun el Numero de Socio y no debe estar entregada
     // NO APLICA EN GRUPOS SOLIDARIOS
     $razon_garantias = $DConvenio["razon_garantia"];
     if ($razon_garantias > 0 and $this->mForceMinistracion == false) {
         $monto_garantizado = $xSocio->getGarantiasFisicasDepositadas();
         $monto_a_garantizar = $montoaut * $razon_garantias;
         if ($monto_garantizado < $monto_a_garantizar) {
             $msg .= "ERROR\tNo ha garantizado el Total del Credito, se debe garantizar {$monto_a_garantizar} y solamente se tiene en resguardo {$monto_garantizado} \r\n";
             $sucess = false;
         }
     }
     // SI EL CREDITO ES AUTOMATIZADO
     if ($modpagos == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
         $diasaut = restarfechas($fechavcto, $fecha);
         //$dsol["dias_autorizados"];				// Dias Autorizados.
         $msg .= "WARN\tLos dias Autorizados se cambian a {$diasaut}\r\n";
         //$fechavcto 	= sumardias($fecha, $diasaut);				// Fecha del Sistema + Dias Autorizados
         $intdiario = $montoaut * $tasacred / EACP_DIAS_INTERES;
     } else {
         //Verifica si existe el Plan de Pagos:
         $sqlck = "SELECT COUNT(tipo_docto) AS 'planes' FROM operaciones_recibos WHERE docto_afectado={$idsolicitud} AND tipo_docto=11";
         $plan = $this->getNumeroDePlanDePagos();
         if (!isset($plan) or empty($plan)) {
             $msg .= "ERROR\tNo se ha Generado el PLAN DE PAGOS \r\n";
             $sucess = false;
         }
         if (strtotime($fecha) != strtotime($fecha_propuesta)) {
             $msg .= "ERROR\tNo se puede ministrar el Credito({$fecha}), ya que el PLAN DE PAGO de calcula desde la fecha " . getFechaLarga($fecha_propuesta) . ", vuelva a elaborar el PLAN DE PAGOS\r\n";
             $sucess = false;
         }
     }
     //VERIFICA EL ICA A PAGAR
     $razon_interes_anticipado = $DConvenio["porcentaje_ica"];
     $iva_incluido = $DConvenio["iva_incluido"];
     $tasa_iva = $DConvenio["tasa_iva"];
     //RULE: Modificar segun el Tipo de pago
     if ($razon_interes_anticipado > 0 and $this->mForceMinistracion == false) {
         // verifica si tiene el Pago de Int Anticipado
         $sumia = $dsol["sdo_int_ant"];
         $mIntDiario = $monto_autorizado_a_ministrar * $tasa_ordinaria_de_interes / EACP_DIAS_INTERES;
         $mntia = $mIntDiario * $diasa * $razon_interes_anticipado - TOLERANCIA_SALDOS;
         $MontoICA = $mntia;
         if ($iva_incluido == '1') {
             $MontoICA = $MontoICA * (1 / (1 + $tasa_iva));
         }
         if ($sumia < $MontoICA) {
             $msg .= "ERROR\tNo se ha cubierto el Interes Anticipado, se ha pagado {$sumia} de {$MontoICA} \r\n";
             $sucess = false;
         } else {
             //
         }
     }
     if ($this->mForceMinistracion == true) {
         $sucess = true;
         $msg .= "WARN\tLa Ministracion es FORZADA \r\n";
     }
     /*------------------------------- AFECTACIONES ------------------------------------------------- */
     if ($sucess == true) {
         $monto = $montoaut;
         $parcialidad = 1;
         if ($monto != 0) {
             $CRecibo = new cReciboDeOperacion(RECIBOS_TIPO_MINISTRACION, true, $recibo);
             //Set a Mvto Contable
             //$CRecibo->setGenerarPoliza();
             $CRecibo->setGenerarTesoreria();
             $CRecibo->setGenerarBancos(true);
             //Agregar recibo si no hay
             if (setNoMenorQueCero($recibo) <= 0) {
                 $recibo = $CRecibo->setNuevoRecibo($socio, $solicitud, $fecha, $parcialidad, RECIBOS_TIPO_MINISTRACION, $observaciones, $cheque, $tipo_de_pago, $recibo_fiscal, $grupo);
                 //Checar si se agrego el recibo
                 if (setNoMenorQueCero($recibo) > 0) {
                     $this->mMessages .= "OK\tSe Agrego Exitosamente el Recibo {$recibo} de la Cuenta " . $this->mNumeroCredito . " \r\n";
                     $this->mReciboDeOperacion = $recibo;
                     $this->mSucess = true;
                 } else {
                     $this->mMessages .= "ERROR\tSe Fallo al Agregar el Recibo {$recibo} de la Cuenta " . $this->mNumeroCredito . " \r\n";
                     $this->mSucess = false;
                 }
             }
             $this->mReciboDeOperacion = $recibo;
             if (setNoMenorQueCero($recibo) > 0) {
                 //Agregar el Movimiento
                 $CRecibo->setNuevoMvto($fecha, $monto, OPERACION_CLAVE_MINISTRACION, $parcialidad, $observaciones, 1, TM_CARGO, $socio, $solicitud);
                 /** @since 2010-11-21 */
                 $this->addSDPM(0, 0, $fecha, 0, CREDITO_ESTADO_VIGENTE, $fecha, OPERACION_CLAVE_MINISTRACION);
                 //$this->mMessages	.= $CRecibo->getMessages();
                 $this->mSucess = true;
             } else {
                 $this->mMessages .= "ERROR\tNo Existe Recibo con el cual trabajar ({$recibo}) \r\n";
             }
             $CRecibo->setFinalizarRecibo(true);
             $this->mMessages .= $CRecibo->getMessages();
         }
         // Actualiza el estatus del credito a Vigente, la fecha de Operacion y la de vencimiento.
         $arrAct = array("fecha_ministracion" => $fecha, "fecha_ultimo_mvto" => $fecha, "estatus_actual" => CREDITO_ESTADO_VIGENTE, "fecha_vencimiento" => $fechavcto, "plazo_en_dias" => $diasaut, "dias_autorizados" => $diasaut, "interes_diario" => $intdiario, "saldo_actual" => $montoaut);
         $this->setUpdate($arrAct);
         // --------------------------------- ENVIA LAS SENTENCIAS SQL----------------------------------------
         //verifica la dif entre cheque 1 y el monto a ministrar
         if ($monto_cheque <= 0) {
             $monto_cheque = $montoaut;
         }
         $difCheque = $montoaut - $monto_cheque;
         $beneficiario = $xSocio->getNombreCompleto();
         $descuento = 0;
         //Separar la generación del cheque
         setNuevoCheque($cheque, $cuenta_cheques, $recibo, $beneficiario, $monto_cheque, $fecha, false, $descuento);
         setUltimoCheque($cuenta_cheques, $cheque);
         if ($difCheque > 0) {
             //setPolizaProforma($recibo, 9200, $difCheque, $socio, $idsolicitud, TM_ABONO);
             setNuevoCheque($cheque2, $cuenta_cheques2, $recibo, $beneficiario, $difCheque, $fecha, false, $descuento);
             setUltimoCheque($cuenta_cheques2, $cheque2);
         }
         //Agregar Avisos de Credito por renovacion
         if ($this->getTipoDeAutorizacion() == CREDITO_TIPO_AUTORIZACION_RENOVACION) {
             //$xSoc		= $this->getOPersona();
             $xSocio->initDatosDeCredito();
             $DCreds = $xSocio->getDatosDeCreditos();
             $xCred = new cCreditos_solicitud();
             foreach ($DCreds as $clave => $valores) {
                 $xCred->setData($valores);
                 if ($xCred->saldo_actual()->v() >= TOLERANCIA_SALDOS) {
                     if ($xCred->numero_solicitud()->v() != $this->getNumeroDeCredito()) {
                         //agregar aviso
                         $xSocio->addMemo(MEMOS_TIPO_NOTA_RENOVACION, "Credito Renovado en la solicitud #" . $this->getNumeroDeCredito(), $xCred->numero_solicitud()->v(), $fecha);
                         $msg .= $xSocio->getMessages();
                     }
                 }
             }
         }
         //ejecutar alertas por Ministracion de Reglas de Negocios
         //Ministracion de Credito de la persona {clave_de_persona} {nombre_de_persona}
         //credito numero {clave_de_credito} con monto {monto_de_credito} y tipo de autorizacion {tipo_de_autorizacion}.
         $OTipoAut = new cCreditos_tipo_de_autorizacion();
         $OTipoAut->setData($OTipoAut->query()->initByID($this->getTipoDeAutorizacion()));
         $xRegla = new cReglaDeNegocio();
         $xRegla->setVariables(array("clave_de_persona" => $xSocio->getCodigo(), "nombre_de_persona" => $xSocio->getNombreCompleto(), "clave_de_credito" => $this->getNumeroDeCredito(), "monto_de_credito" => $this->getMontoAutorizado(), "tipo_de_autorizacion" => $OTipoAut->descripcion_tipo_de_autorizacion()->v(OUT_TXT)));
         $xRegla->setExecuteActions($xRegla->reglas()->RN_MINISTRAR_CREDITO);
     } else {
         $msg .= "ERROR\tNo se efectua operacion alguna\r\n";
     }
     $this->mMessages .= $msg;
     return $recibo;
 }
 function getGenerarBaseGravadaMensualIDE($fecha = false)
 {
     if ($fecha == false) {
         $fecha = fechasys();
     }
     $msg = "";
     $msg .= "============== GENERANDO EL MOVIMIENTO DE BASE GRAVABLE DEL IDE\t==========\r\n";
     $msg .= "============== FECHA: {$fecha}                                    ==========\r\n";
     $xF = new cFecha(0, $fecha);
     $dia_inicial = $xF->getDiaInicial();
     $dia_final = $xF->getDiaFinal();
     $sqlGravados = "SELECT\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS 'monto'\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\t\t\tINNER JOIN `operaciones_recibos` `operaciones_recibos`\n\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`recibo_afectado` = `operaciones_recibos`.\n\t\t\t\t\t\t\t\t\t`idoperaciones_recibos`\n\t\t\t\t\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` =\n\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` >='{$dia_inicial}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` <='{$dia_final}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 2600)\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`operaciones_recibos`.`tipo_pago` = 'efectivo' )\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t\t\t`operaciones_recibos`.`tipo_pago` ";
     //$msg		.= "$sqlGravados\r\n";
     //Agregar Recibo
     $xRec = new cReciboDeOperacion(10);
     //$xRec->setGenerarPoliza();
     $xRec->setForceUpdateSaldos();
     $idrecibo = $xRec->setNuevoRecibo(1, 1, $fecha, 1, 10, "BASE_REMANENTE_GRAVABLE_AL_IDE", "NA", "ninguno", "NA", DEFAULT_GRUPO);
     $xRec->setNumeroDeRecibo($idrecibo);
     $rs = getRecordset($sqlGravados);
     while ($rw = mysql_fetch_array($rs)) {
         $socio = $rw["socio_afectado"];
         $excencion = EXCENCION_IDE;
         $base_gravada = setNoMenorQueCero($rw["monto"] - $excencion);
         if ($base_gravada > 0) {
             $xRec->setNuevoMvto($dia_final, $base_gravada, 9302, 1, "", 1, false, $socio, 1);
         }
     }
     $xRec->setFinalizarRecibo();
     $msg .= $xRec->getMessages("txt");
     return $msg;
 }
function jsaVincularEmpresa($credito, $observaciones, $empresa)
{
    $msg = "";
    $xCred = new cCredito($credito);
    $xCred->init();
    $xdat = new cFecha(0);
    $fecha = $xdat->get();
    // FechaISO($fecha);
    $xCred->init();
    $socio = $xCred->getClaveDePersona();
    $xSoc = new cSocio($socio);
    $xSoc->init();
    $xCred->setCambioProducto(CREDITO_PRODUCTO_NOMINA);
    $xCred->setResetPersonaAsociada($fecha, $observaciones, $empresa);
    //Agregar operacion de desvinculacion
    $xRe = new cReciboDeOperacion(RECIBOS_TIPO_ESTADISTICO, false, DEFAULT_RECIBO);
    $xRe->init();
    $xRe->setNuevoMvto($fecha, $xCred->getSaldoActual(), OPERACION_CLAVE_VINCULACION, $xCred->getPeriodoActual(), "", 1, false, $socio, $credito, $fecha);
    $xRe->setFinalizarRecibo();
    $msg .= $xSoc->getMessages(OUT_TXT);
    $msg .= $xCred->getMessages(OUT_TXT);
    $msg .= $xRe->getMessages(OUT_TXT);
    $xF = new cFileLog();
    $xF->setWrite($msg);
    $xF->setClose();
    return $xF->getLinkDownload("Descarga de Log");
}
 function setTraspaso($CuentaDestino, $TipoDestino, $observaciones = "", $monto = false)
 {
     if ($this->mCuentaIniciada == false) {
         $this->init();
     }
     $cuentaOrigen = $this->mNumeroCuenta;
     $socio = $this->mSocioTitular;
     $saldoOrigen = $this->mSaldoActual;
     $fechaOperacion = fechasys();
     $tipoPago = TESORERIA_COBRO_NINGUNO;
     $cheque = "NA";
     $reciboFiscal = "";
     $tipoDocumento = 9;
     $msg = "";
     if ($TipoDestino == CAPTACION_TIPO_PLAZO) {
         $xCDestino = new cCuentaInversionPlazoFijo($CuentaDestino, $socio);
     } else {
         $xCDestino = new cCuentaALaVista($CuentaDestino, $socio);
     }
     $xCDestino->init();
     if ($monto > $saldoOrigen) {
         $msg .= "ERROR\tEl Monto a Retirar {$monto} es mayor al saldo de Origen {$saldoOrigen} \r\n";
     } else {
         //Crear el Recibo
         $xRec = new cReciboDeOperacion($tipoDocumento);
         $ReciboTrasp = $xRec->setNuevoRecibo($socio, $cuentaOrigen, $fechaOperacion, 1, $tipoDocumento, $observaciones, $cheque, $tipoPago);
         $xRec->setNumeroDeRecibo($ReciboTrasp);
         $xRec->setGenerarPoliza();
         $xRec->setForceUpdateSaldos();
         $xRec->initRecibo();
         $this->setCuentaBancaria(DEFAULT_CUENTA_BANCARIA);
         $this->setReciboDeOperacion($ReciboTrasp);
         $this->setForceOperations(true);
         $xCDestino->setReciboDeOperacion($ReciboTrasp);
         $this->setRetiro($monto, $cheque, $tipoPago, $reciboFiscal, $observaciones, DEFAULT_GRUPO, $fechaOperacion, $ReciboTrasp);
         $xCDestino->setDeposito($monto, $cheque, $tipoPago, $reciboFiscal, $observaciones, DEFAULT_GRUPO, $fechaOperacion, $ReciboTrasp);
         $xRec->setFinalizarRecibo(true);
         $msg .= $xRec->getMessages("txt");
     }
     return $msg;
 }
                 //finalizar tesoreria
                 $xRecCapt->setFinalizarTesoreria(array("cuenta" => $cuenta_cheques, "cheque" => $cheque));
             }
             $msg .= MODO_DEBUG == true ? $xRecCapt->getMessages() : "";
         }
     }
     if ($montocomision > 0) {
         $xRec = new cReciboDeOperacion();
         $idrecibo = $xRec->setNuevoRecibo($idsocio, $idsolicitud, $fecha, 1, RECIBOS_TIPO_OINGRESOS, $observaciones, $cheque, TESORERIA_COBRO_DESCTO, $recibo_fiscal);
         if (setNoMenorQueCero($idrecibo) > 0) {
             $montocomision = round($montocomision * (1 / (1 + TASA_IVA)), 2);
             $montoivacomi = round($montocomision * TASA_IVA, 2);
             $xRec->setNuevoMvto($fecha, $montocomision, OPERACION_CLAVE_COMISION_APERTURA, 1, $observaciones, 1, TM_CARGO, $idsocio);
             $xRec->setNuevoMvto($fecha, $montoivacomi, OPERACION_CLAVE_PAGO_IVA_OTROS, 1, $observaciones, 1, TM_CARGO, $idsocio);
             //$xRec->addMvtoContableByTipoDePago($montocomision, TM_CARGO);
             if ($xRec->setFinalizarRecibo(true) == true) {
                 $xFRM->OButton("TR.Recibo de Comisiones", "jsImprimirRecibo()", "imprimir");
                 $xFRM->addHTML($xRec->getJsPrint(true));
                 $xRec->setFinalizarTesoreria(array("cuenta" => $cuenta_cheques, "cheque" => $cheque));
             }
             $msg .= MODO_DEBUG == true ? $xRec->getMessages() : "";
         }
     }
     //Buttons
     $xFRM->OButton("TR.VER/IMPRIMIR PAGARE DE CREDITO", "printpagare();", "imprimir", 'id1');
     $xFRM->OButton("TR.VER/IMPRIMIR CONTRATO DE CREDITO", "contratocredito();", "imprimir", 'id2');
     $xFRM->OButton("TR.IMPRIMIR MANDATO", "printmandato()", "imprimir", "id3");
 } else {
     $xFRM->addAvisoRegistroError();
 }
 if (MODO_DEBUG == true) {
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}";
}
function Common_c8581154ac4e27cb0e122d71341dd7d8($strCmd)
{
    $DPar = explode(STD_LITERAL_DIVISOR, $strCmd);
    $xTip = new cTipos();
    //
    $socio = $xTip->cInt($DPar[0]);
    $cuenta = $xTip->cInt($DPar[1]);
    $deposito = $xTip->cFloat($DPar[2]);
    $retiro = $xTip->cFloat($DPar[3]);
    $nota = $xTip->cChar($DPar[4]);
    $numero = $xTip->cInt($DPar[5]);
    $limit = $xTip->cInt($DPar[6]);
    if (isset($_SESSION["recibo_en_proceso"])) {
        $recibo = $_SESSION["recibo_en_proceso"];
        $fecha = fechasys();
        $_SESSION["total_recibo_en_proceso"] += $deposito - $retiro;
        $xRec = new cReciboDeOperacion(200, false, $recibo);
        $xRec->setNumeroDeRecibo($recibo, true);
        $DRec = $xRec->getDatosInArray();
        $cheque = $DRec["cheque_afectador"];
        $tipopago = $DRec["tipo_pago"];
        $recibofiscal = $DRec["recibo_fiscal"];
        if ($deposito > 0 or $retiro > 0) {
            $xC = new cCuentaALaVista($cuenta);
            $grupo = DEFAULT_GRUPO;
            $xC->setSocioTitular($socio);
            $xC->setReciboDeOperacion($recibo);
            if ($deposito > 0) {
                $xC->setDeposito($deposito, $cheque, $tipopago, $recibofiscal, $nota, $grupo, $fecha, $recibo);
            }
            if ($retiro > 0) {
                $xC->setRetiro($retiro, $cheque, $tipopago, $recibofiscal, $nota, $grupo, $fecha, $recibo);
            }
        }
        if ($numero == $limit) {
            $xRec->setForceUpdateSaldos();
            $xRec->setFinalizarRecibo(true);
            //$MsgEnd		.= "**** proceso terminado ****";
        }
    }
    //retorna el id del control de origen para neutralizar
    return "-{$numero}";
}
 function setConciliarCreditos()
 {
     $msg = "";
     $cRec = new cReciboDeOperacion(10);
     $xRec = $cRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, fechasys(), 1, 10, "RECIBO_DE_AJUSTES_DE_PLAN_DE_PAGOS");
     $msg .= "\t\tRECIBO\tEl Recibo de Operacion es {$xRec}\r\n";
     $cRec->setNumeroDeRecibo($xRec, true);
     //Concilia Creditos sin Planes de Pago a SISBANCS
     $sql = "SELECT\n\t\t\t\t\t\t\t\t`migracion_creditos_por_socio`.`numero_socio`,\n\t\t\t\t\t\t\t\t`migracion_creditos_por_socio`.`creditos`,\n\t\t\t\t\t\t\t\t`migracion_creditos_por_socio`.`saldo`,\n\t\t\t\t\t\t\t\tgetCreditosCompac(numero_socio) AS `saldo_compac`,\n\t\t\t\t\t\t\t\t( `migracion_creditos_por_socio`.`saldo` -  getCreditosCompac(numero_socio)) AS 'diferencia'\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`migracion_creditos_por_socio` `migracion_creditos_por_socio`\n\n\t\t\t\t\t\t\tHAVING\n\t\t\t\t\t\t\t\t(diferencia >0.99\n\t\t\t\t\t\t\t\tOR\n\t\t\t\t\t\t\t\tdiferencia < -0.99)";
     $rs = getRecordset($sql);
     while ($rw = mysql_fetch_array($rs)) {
         $socio = $rw["numero_socio"];
         $sqlCred = "SELECT\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.*,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_tipoconvenio`.*,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_periocidadpagos`.*,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_estatus`.*,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`tasa_interes` AS `tasa_ordinaria_anual`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`tipo_autorizacion` AS `tipo_de_autorizacion`,\n\t\t\t\t\t\t\t\t                    `creditos_solicitud`.`tasa_ahorro` AS `tasa_de_ahorro`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_tipoconvenio` `creditos_tipoconvenio`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `creditos_tipoconvenio`.`idcreditos_tipoconvenio`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t= `creditos_solicitud`.`tipo_convenio`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `creditos_periocidadpagos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_periocidadpagos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `creditos_periocidadpagos`.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`idcreditos_periocidadpagos` =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`periocidad_de_pago`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `creditos_estatus`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_estatus`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `creditos_estatus`.`idcreditos_estatus` =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`estatus_actual`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(`creditos_solicitud`.`numero_socio` = {$socio} )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tORDER BY fecha_vencimiento ASC, saldo_actual DESC,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfecha_solicitud DESC\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
         $ajuste = $rw["diferencia"];
         $SdoCW = $rw["saldo_compac"];
         $SdoSAFE = $rw["saldo"];
         $rsC = getRecordset($sqlCred);
         while ($rwC = mysql_fetch_array($rsC)) {
             $credito = $rwC["numero_solicitud"];
             $saldo = $rwC["saldo_actual"];
             $cCredito = new cCredito($credito, $socio);
             $cCredito->init($rwC);
             $DCred = $cCredito->getDatosDeCredito();
             $TAjustar = 0;
             //Generar un abono a Capital
             //si el ajuste es mayo a 0.09 o menor que -0.99 proseguir::
             if ($ajuste > 0.09 or $ajuste < -0.09) {
                 //Si 100 > 0.09 Y 0 < 0.09
                 if ($ajuste > 0.09 and $saldo <= 0.09) {
                     $msg .= "{$socio}\t{$credito}\tSe ignora el Credito por no tener Saldo (COMPACW {$SdoCW} / Credito {$saldo})\r\n";
                 } else {
                     // 50 > 30
                     //500 > -140
                     if ($ajuste > $saldo) {
                         //saldo <= 0
                         if ($saldo <= 0) {
                             //justar	= 500
                             $TAjustar = $ajuste;
                             //xajustar	= 0
                             $ajuste = 0;
                         } else {
                             //ajuste	= 30;
                             $TAjustar = $saldo;
                             //xajustar	= 50 - 30 = 20;
                             $ajuste = $ajuste - $saldo;
                         }
                         //80 < 100
                     } elseif ($ajuste < $saldo) {
                         //ajuste	= 80;
                         $TAjustar = $ajuste;
                         //xajustar	= 0;
                         $ajuste = 0;
                     } elseif ($ajuste == $saldo) {
                         //80 == 80
                         //ajustar	= 80
                         $TAjustar = $ajuste;
                         //xajustar	= 0;
                         $ajuste = 0;
                     }
                     $cCredito->setReciboDeOperacion($xRec);
                     $cCredito->setAbonoCapital($TAjustar);
                     $msg .= "{$socio}\t{$credito}\tRealizando un Ajuste de {$TAjustar} (COMPACW {$SdoCW} / Credito {$saldo})\r\n";
                     $msg .= $cCredito->getMessages("txt");
                 }
             } else {
                 $msg .= "{$socio}\t{$credito}\tNo se Realizan NINGUN ajuste (SAFE {$SdoSAFE} / COMPACW {$SdoCW} / Ajuste {$ajuste})\r\n";
             }
         }
         $msg .= "=============================\t{$socio}\t===========================\r\n";
         //$msg	.=  $cCredito->getMessages("txt");
     }
     $cRec->setFinalizarRecibo(true);
     $msg .= $cRec->getMessages("txt");
     return $msg;
 }
</form>
</fieldset>
<?php 
$socio = $_POST["idsocio"];
$documento = $_POST["idsolicitud"];
$tipo = $_POST["tipodescuento"];
$monto = $_POST["monto"];
$parcialidad = $_POST["idparcialidad"];
$observaciones = $_POST["observaciones"];
$fecha_operacion = fechasys();
if (isset($socio) and $monto > 0) {
    $xBtn = new cHButton("id-cmdImprimir");
    $xRec = new cReciboDeOperacion(96, false);
    $recibo = $xRec->setNuevoRecibo($socio, $documento, $fecha_operacion, $parcialidad, 96, $observaciones);
    $xRec->setNuevoMvto($fecha_operacion, $monto, $tipo, $parcialidad, $observaciones, -1, TM_ABONO);
    $xRec->setFinalizarRecibo();
    echo $xRec->getFichaSocio();
    echo $xRec->getFicha(true, "<tr><th colspan='4'>" . $xBtn->getImprimirRecibo() . "</th></tr>");
}
// end if
?>
</body>
<script  >
<?php 
if (isset($socio) and $monto > 0) {
    echo $xRec->getJsPrint();
}
?>
</script>
</html>
 function setEliminarCreditosNegativos()
 {
     //Crear un nuevo Recibo de Ajuste
     $cRec = new cReciboDeOperacion(10);
     $xRec = $cRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, fechasys(), 1, 10, "RECIBO_DE_AJUSTES_DE_CREDITOS");
     $msg = "============\tRECIBO\tEl Recibo de Operacion es {$xRec}\r\n";
     $cRec->setNumeroDeRecibo($xRec, true);
     /*Esta funcion servira para eliminar saldos negativos de Créditos */
     $sql = "SELECT\n\t\t\t\t\t`creditos_solicitud`.*,\n\t\t\t\t\t`creditos_tipoconvenio`.*,\n\t\t\t\t\t`creditos_periocidadpagos`.*,\n\t\t\t\t\t`creditos_estatus`.*,\n\t\t\t\t\t`creditos_solicitud`.`tasa_interes` AS `tasa_ordinaria_anual`,\n\t\t\t\t\t`creditos_solicitud`.`tipo_autorizacion` AS `tipo_de_autorizacion`,\n                    `creditos_solicitud`.`tasa_ahorro` AS `tasa_de_ahorro`\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t`creditos_tipoconvenio` `creditos_tipoconvenio`\n\t\t\t\t\t\tINNER JOIN `creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\tON `creditos_tipoconvenio`.`idcreditos_tipoconvenio`\n\t\t\t\t\t\t= `creditos_solicitud`.`tipo_convenio`\n\t\t\t\t\t\t\tINNER JOIN `creditos_periocidadpagos`\n\t\t\t\t\t\t\t`creditos_periocidadpagos`\n\t\t\t\t\t\t\tON `creditos_periocidadpagos`.\n\t\t\t\t\t\t\t`idcreditos_periocidadpagos` =\n\t\t\t\t\t\t\t`creditos_solicitud`.`periocidad_de_pago`\n\t\t\t\t\t\t\t\tINNER JOIN `creditos_estatus`\n\t\t\t\t\t\t\t\t`creditos_estatus`\n\t\t\t\t\t\t\t\tON `creditos_estatus`.`idcreditos_estatus` =\n\t\t\t\t\t\t\t\t`creditos_solicitud`.`estatus_actual`\n\t\t\t\t\t\t\t\tWHERE saldo_actual < " . TOLERANCIA_SALDOS . " ORDER BY saldo_actual ";
     $rs = getRecordset($sql);
     while ($rw = mysql_fetch_array($rs)) {
         $socio = $rw["numero_socio"];
         $credito = $rw["numero_solicitud"];
         $saldo_actual = $rw["saldo_actual"];
         //Se inicializa una nueva instancia de crédito
         $cCredito = new cCredito($credito, $socio);
         //y se neutralizara con su valor absoluto.
         $cCredito->init($rw);
         $cCredito->setReciboDeOperacion($xRec);
         //Generar un abono a Capital
         $cCredito->setAbonoCapital($saldo_actual);
         $msg .= "{$socio}\t{$credito}\tEliminando el saldo de {$saldo_actual}\r\n";
         $msg .= $cCredito->getMessages("txt");
     }
     $cRec->setFinalizarRecibo(true);
     return $msg;
 }
 function setPurgueDB()
 {
     $sqlT = array();
     $msg = "";
     $xF = new cFecha();
     $sqlT[] = "DELETE FROM bancos_cuentas WHERE idbancos_cuentas != " . FALLBACK_CUENTA_BANCARIA;
     $sqlT[] = "DELETE FROM bancos_operaciones ";
     $sqlT[] = "DELETE FROM captacion_cuentas WHERE numero_cuenta!=" . CTA_GLOBAL_CORRIENTE;
     $sqlT[] = "DELETE FROM captacion_sdpm_historico ";
     $sqlT[] = "DELETE FROM captacion_firmas";
     $sqlT[] = "DELETE FROM captacion_sdpm_historico";
     $sqlT[] = "DELETE FROM contable_catalogo ";
     $sqlT[] = "DELETE FROM contable_catalogorelacion ";
     $sqlT[] = "DELETE FROM contable_movimientos ";
     $sqlT[] = "DELETE FROM contable_polizas ";
     $sqlT[] = "DELETE FROM contable_saldos";
     $sqlT[] = "DELETE FROM contable_polizas_proforma ";
     $sqlT[] = "DELETE FROM creditos_reconvenio";
     $sqlT[] = "DELETE FROM creditos_solicitud WHERE numero_solicitud !=" . DEFAULT_CREDITO;
     $sqlT[] = "DELETE FROM creditos_garantias";
     $sqlT[] = "DELETE FROM creditos_flujoefvo";
     $sqlT[] = "DELETE FROM creditos_lineas";
     $sqlT[] = "DELETE FROM creditos_productos_otros_parametros ";
     $sqlT[] = "DELETE FROM creditos_sdpm_historico";
     $sqlT[] = "DELETE FROM creditos_periodos ";
     //WHERE idcreditos_periodos !=
     $sqlT[] = "DELETE FROM  creditos_rechazados ";
     $sqlT[] = "DELETE FROM general_sucursales WHERE codigo_sucursal != \"matriz\" AND codigo_sucursal !='" . getSucursal() . "'  ";
     $sqlT[] = "DELETE FROM general_log ";
     $sqlT[] = "DELETE FROM general_tmp ";
     $sqlT[] = "DELETE FROM general_import ";
     $sqlT[] = "DELETE FROM operaciones_recibos";
     $sqlT[] = "DELETE FROM operaciones_mvtos";
     $sqlT[] = "DELETE FROM seguimiento_compromisos";
     $sqlT[] = "DELETE FROM seguimiento_llamadas ";
     $sqlT[] = "DELETE FROM seguimiento_notificaciones";
     $sqlT[] = "DELETE FROM socios_aeconomica";
     $sqlT[] = "DELETE FROM socios_aportaciones";
     $sqlT[] = "DELETE FROM socios_baja";
     $sqlT[] = "DELETE FROM socios_cajalocal WHERE idsocios_cajalocal != " . getCajaLocal() . " AND sucursal != '" . getSucursal() . "' ";
     $sqlT[] = "DELETE FROM `socios_aeconomica_dependencias`\n\t\t\tWHERE `idsocios_aeconomica_dependencias` !=" . DEFAULT_EMPRESA . "\n\t\t\tAND `idsocios_aeconomica_dependencias` !=" . FALLBACK_CLAVE_EMPRESA;
     $sqlT[] = "DELETE FROM socios_general WHERE codigo!=" . DEFAULT_SOCIO . " AND codigo !=" . EACP_ID_DE_PERSONA;
     $sqlT[] = "DELETE FROM socios_memo";
     $sqlT[] = "DELETE FROM socios_patrimonio";
     $sqlT[] = "DELETE FROM socios_relaciones";
     $sqlT[] = "DELETE FROM socios_vivienda";
     $sqlT[] = "DELETE FROM socios_grupossolidarios WHERE idsocios_grupossolidarios!=" . DEFAULT_GRUPO;
     $sqlT[] = "DELETE FROM  `personas_documentacion` ";
     $sqlT[] = "DELETE FROM  `socios_otros_parametros` ";
     $sqlT[] = "DELETE FROM t_03f996214fba4a1d05a68b18fece8e71 WHERE idusuarios !=99";
     $sqlT[] = "DELETE FROM tesoreria_cajas";
     $sqlT[] = "DELETE FROM `tesoreria_cajas_movimientos` ";
     $sqlT[] = "DELETE FROM usuarios_web ";
     $sqlT[] = "DELETE FROM usuarios_web_connected";
     $sqlT[] = "DELETE FROM `usuarios_web_notas` ";
     $sqlT[] = "DELETE FROM general_tmp";
     $sqlT[] = "DELETE FROM general_folios ";
     $sqlT[] = "DELETE FROM contable_polizas_proforma ";
     $sqlT[] = "DELETE FROM contable_centrodecostos WHERE idcontable_centrodecostos !=0 ";
     $sqlT[] = "DELETE FROM general_log ";
     $sqlT[] = "UPDATE t_03f996214fba4a1d05a68b18fece8e71 SET f_34023acbff254d34664f94c3e08d836e = md5('root') WHERE f_28fb96d57b21090705cfdf8bc3445d2a = 'root'";
     //*/
     //TODO: Actualizar nombre de la tabla
     $sqlT[] = "DELETE FROM `empresas_operaciones` ";
     $sqlT[] = "DELETE FROM `empresas_cobranza`";
     $sqlT[] = "DELETE FROM `sistema_programacion_de_avisos` ";
     $sqlT[] = "DELETE FROM `personas_perfil_transaccional` ";
     $sqlT[] = "DELETE FROM `creditos_rechazados` ";
     //AML
     $sqlT[] = "DELETE FROM  `aml_risk_register`";
     $sqlT[] = "DELETE FROM  `aml_alerts`";
     $sqlT[] = "DELETE FROM  `personas_documentacion` ";
     $sqlT[] = "DELETE FROM  `socios_otros_parametros` ";
     $sqlT[] = "UPDATE `general_contratos` SET `texto_del_contrato` = '' WHERE `idgeneral_contratos` = '5' ";
     $sqlT[] = "UPDATE `general_contratos` SET `texto_del_contrato` = '' WHERE `idgeneral_contratos` = '9' ";
     $sqlT[] = "UPDATE `general_contratos` SET `texto_del_contrato` = '' WHERE `idgeneral_contratos` = '8' ";
     //$sqlT[]	= "DELETE FROM  ";
     $sqlT[] = "DELETE FROM  creditos_otros_datos ";
     $sqlT[] = "DELETE FROM  `aml_perfil_egresos_por_persona` ";
     $sqlT[] = "DELETE FROM  `historial_de_pagos` ";
     $sqlT[] = "DELETE FROM  `operaciones_archivo_de_facturas` ";
     $sqlT[] = "DELETE FROM  `personas_operaciones_recursivas` ";
     $sqlT[] = "DELETE FROM  `personas_relaciones_recursivas` ";
     $sqlT[] = "DELETE FROM  `tesoreria_caja_arqueos` ";
     //$sqlT[]	= "DELETE FROM  ";
     //$sqlT[]	= "DELETE FROM  ";
     //$sqlT[]	= "DELETE FROM  ";
     $sqlT[] = "UPDATE `socios_general` SET `nombrecompleto` = 'REGISTRO_INICIAL_FINANCIERA' WHERE `codigo` = '10000'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE  `nombre_del_parametro` = 'curp_del_representante_legal'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE  `nombre_del_parametro` = 'nombre_del_presidente_del_consejo_de_vigilancia'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'nombre_del_representante_legal'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'rfc_del_representante_legal'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'domicilio.domicilio_integrado'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'email_de_la_entidad'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'nombre_de_la_entidad'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'registro_ante_la_cnbv'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'registro_casfin'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'registro_patronal_imss'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'rfc_de_la_entidad'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'email_de_nominas'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'entidad_corto_en_el_sic'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'contrasenna_de_sms_automaticos'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'usuario_de_sms_automaticos'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'email_del_administrador'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'password_de_usuario_ftp' ";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'nombre_de_usuario_ftp' ";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'system_pay_email_register'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'password_del_email_del_administrador'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'contrasenna_de_trabajos_automaticos'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '' WHERE `nombre_del_parametro` = 'usuario_de_sms_automaticos'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '00000000' WHERE `nombre_del_parametro` = 'entidad_clave_en_el_sic'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '00000000' WHERE `nombre_del_parametro` = 'domicilio.telefono_principal'";
     $sqlT[] = " UPDATE `entidad_configuracion` SET `valor_del_parametro` = 'https://demo.sipakal.com/' WHERE `nombre_del_parametro` = 'url_de_entidad_transmisora'";
     //$sqlT[]	= " UPDATE `entidad_configuracion` SET `valor_del_parametro` = '00000000' WHERE `nombre_del_parametro` = 'entidad_clave_en_el_sic'";
     $sqlT[] = "INSERT INTO `bancos_entidades` (`idbancos_entidades`, `nombre_de_la_entidad`, `rfc_de_la_entidad`) VALUES ('999', 'BANCO_POR_DEFECTO', 'BAN999999')  ";
     $sqlT[] = "INSERT INTO `bancos_cuentas` (`idbancos_cuentas`, `descripcion_cuenta`, `fecha_de_apertura`, `estatus_actual`, `consecutivo_actual`, `saldo_actual`, `sucursal`, `entidad_bancaria`) VALUES ('99', 'FALLBACK_CUENTA', '2014-01-01', 'activo', '1', '100000000', 'matriz', '1') ";
     $sqlT[] = "INSERT INTO `t_03f996214fba4a1d05a68b18fece8e71` (`idusuarios`, `f_28fb96d57b21090705cfdf8bc3445d2a`, `apellidopaterno`, `apellidomaterno`, `puesto`, `periodo_responsable`, `codigo_de_persona`) VALUES ('1', 'USUARIO POR DEFECTO', '', '', 'Usuario por Defecto', '1', '99999')";
     $sqlT[] = "UPDATE `general_contratos` SET `texto_del_contrato` = '' WHERE `idgeneral_contratos` = '801'";
     $sqlT[] = "UPDATE `general_contratos` SET `texto_del_contrato` = '' WHERE `idgeneral_contratos` = '4'";
     $sqlT[] = "INSERT INTO `contable_centrodecostos` (`idcontable_centrodecostos`, `nombre_centrodecostos`) VALUES ('1', 'POR DEFECTO')";
     foreach ($sqlT as $id => $sql) {
         $x = my_query($sql);
         if ($x[SYS_ESTADO] != false) {
             if (isset($x[SYS_INFO])) {
                 $msg .= "OK\t" . $xF->getMarca() . "\t" . $x[SYS_INFO] . " SQL : {$sql}\r\n";
             } else {
                 $msg .= "OK\t" . $xF->getMarca() . "\tSQL : {$sql} \r\n";
             }
         } else {
             if (isset($x[SYS_ERROR])) {
                 $msg .= "ERROR\t" . $xF->getMarca() . "\t" . $x[SYS_ERROR] . " SQL : {$sql} \r\n";
             } else {
                 $msg .= "ERROR\t" . $xF->getMarca() . "- \tSQL : {$sql} \r\n";
             }
         }
     }
     //llevar los folios al maximo
     $msg .= setFoliosAlMaximo();
     //
     $xRec = new cReciboDeOperacion(12);
     $idrecibo = $xRec->setNuevoRecibo(1, 1, fechasys(), 1, 12, "CIERRE_ESTABLECIDO_POR_DEFECTO", "NA", "ninguno", "NA", DEFAULT_GRUPO);
     $xRec->setFinalizarRecibo(false);
     //Crear periodo de credito
     //TODO: Agregar informacion de valores por DEFAULT
     $xP = new cPeriodoDeCredito();
     $xP->add();
     $msg .= $xP->setCambiar(EACP_PER_SOLICITUDES);
     $xConf = new cConfiguration();
     $xConf->set("fecha_de_inicio_de_operaciones_en_el_sistema", fechasys());
     $msg .= "OK\tCONFIGURATION\tSe cambio la fecha de Inicio de Operaciones en el sistema\r\n";
     $xSoc = new cSocio(10000);
     //);
     $xSoc->setOmitirAML();
     $xSoc->add(EACP_NAME, "", "", EACP_RFC, "", getCajaLocal(), EACP_FECHA_DE_CONSTITUCION, EACP_LOCALIDAD);
     $xSoc->addVivienda(EACP_DOMICILIO_CORTO, "", EACP_CODIGO_POSTAL, "", "", EACP_TELEFONO_PRINCIPAL, "", true, 1, 1, 99, EACP_COLONIA, "calle", "", EACP_CLAVE_DE_LOCALIDAD, EACP_CLAVE_DE_PAIS);
     my_query("INSERT INTO `socios_general` (`codigo`, `nombrecompleto`, `estatusactual`, `cajalocal`, `sucursal`) VALUES ('10000', 'MICROFINANCIERA', '10', '1', 'matriz')");
     return $msg;
 }
 } else {
     //retirar de la cuenta 50
     //obtener recibo de la garantia
     if ($solo_simular == 0) {
         $messages .= "Efectuar Retiro de la Socia {$codigo_rep} <br /> ";
         $sqlSumGtiaLiquida = "SELECT\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSUM( (`eacp_config_bases_de_integracion_miembros`.`afectacion` *\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`afectacion_real`) ) AS 'monto'\n\t\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` =2500)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`docto_afectado` = {$credito})\n\t\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado` ";
         $DG = obten_filas($sqlSumGtiaLiquida);
         $GDocto = $DG["docto_afectado"];
         $monto = $DG["monto"];
         $GDate = date("Y-m-d");
         //=============================retirar de garantia Liquida
         if ($monto > 0) {
             $xr = new cReciboDeOperacion(17);
             $xr->setNuevorecibo($codigo_rep, $GDocto, $GDate, 1, 17, "GENERADO_AUTOMATICAMENTE_POR_{$iduser}", "NA", "ninguno", "NA", $grupo);
             $xr->setNuevoMvto($GDate, $monto, 353, 1, "GENERADO_AUTOMATICAMENTE_POR_{$iduser}", 1, TM_CARGO);
             $xr->setFinalizarRecibo();
             //Mensages
             $messages .= $xr->getMessages() . "<br />";
         }
         //===============================Retirar el Ahorro
         //Buscar Ahorro
         $xCR = new cCuentaALaVista("50" . $codigo_rep . "01");
         $exist = $xCR->setContarCuentaBySocio($codigo_rep, 50);
         //Si el Ahorro exisre proseguir en el retiro
         if ($exist >= 1) {
             $messages .= "Efectuar Retiro de Ahorro de la Socia {$codigo_rep} <br /> ";
             $sqlSCta = "SELECT\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.*\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(`captacion_cuentas`.`numero_socio` = {$codigo_rep})\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(`captacion_cuentas`.`tipo_subproducto` = 50)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLIMIT 0,1";
             $RDG = obten_filas($sqlSCta);
             $RCta = $RDG["numero_cuenta"];
             $RMonto = $RDG["saldo_cuenta"];
             $xNC = new cCuentaALaVista($RCta);
function jsaAjustarTotal($recibo, $nuevoTotal, $nuevaletra)
{
    $xRec = new cReciboDeOperacion(false, true, $recibo);
    $xRec->init();
    $xRec->setGenerarBancos(false);
    $xRec->setGenerarPoliza(false);
    $xRec->setGenerarTesoreria(false);
    $xRec->setForceUpdateSaldos(true);
    $total = $xRec->getTotal();
    $QL = new MQL();
    $DMov = new cOperaciones_mvtos();
    $msg = "";
    if ($nuevoTotal < $total) {
        $NRec = new cReciboDeOperacion($xRec->getTipoDeRecibo(), false, $recibo);
        $idNRec = $NRec->setNuevoRecibo($xRec->getCodigoDeSocio(), $xRec->getCodigoDeDocumento(), $xRec->getFechaDeRecibo(), 0, $xRec->getTipoDeRecibo(), "AJUSTE DEL RECIBO {$recibo}");
        $NRec->setForceUpdateSaldos(true);
        $NRec->setGenerarBancos(false);
        $NRec->setGenerarPoliza(false);
        $NRec->setGenerarTesoreria(false);
        /*`idoperaciones_mvtos`,
        		`operaciones_mvtos`.`fecha_operacion`,
        		`operaciones_mvtos`.`fecha_afectacion`,
        		`operaciones_mvtos`.`recibo_afectado`,
        		`operaciones_mvtos`.`socio_afectado`,
        		`operaciones_mvtos`.`docto_afectado`,
        		`operaciones_mvtos`.`tipo_operacion`,
        		`operaciones_mvtos`.`afectacion_real`  */
        $sql = "SELECT\n\t\t\t`operaciones_mvtos`.*\n\n\t\tFROM\n\t\t\t`operaciones_mvtos` `operaciones_mvtos` \n\t\t\t\tINNER JOIN `operaciones_tipos` `operaciones_tipos` \n\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = `operaciones_tipos`.\n\t\t\t\t`idoperaciones_tipos` \n\t\tWHERE\n\t\t\t(`operaciones_mvtos`.`recibo_afectado` ={$recibo}) \n\t\tORDER BY\n\t\t\t`operaciones_mvtos`.`tipo_operacion` DESC ";
        $rs = $QL->getDataRecord($sql);
        $arrops = array();
        foreach ($rs as $rw) {
            $DMov->setData($rw);
            $NMonto = $DMov->afectacion_real()->v();
            $IDOpe = $DMov->idoperaciones_mvtos()->v();
            if ($nuevoTotal > 0) {
                $nuevoTotal -= $NMonto;
                $msg .= $IDOpe . " \t {$nuevoTotal} DE {$NMonto}\r\n";
                if ($nuevoTotal < 0) {
                    $msg .= "CUADRAR {$NMonto} DE {$nuevoTotal}  \r\n";
                    $nuevoTotal = $nuevoTotal * -1;
                    $dif = $NMonto - $nuevoTotal;
                    $sql = "UPDATE operaciones_mvtos \n\t\t\t\t\t\t\tSET afectacion_real={$dif}, afectacion_cobranza={$dif}, afectacion_contable={$dif},\n\t\t\t\t\t\t\tafectacion_estadistica={$dif} WHERE idoperaciones_mvtos={$IDOpe} ";
                    $x = my_query($sql);
                    $msg .= $x[SYS_INFO];
                    //agregar el movimiento al nuevo recibo con cargos
                    $NRec->setNuevoMvto($DMov->fecha_operacion()->v(), $nuevoTotal, $DMov->tipo_operacion()->v(), $DMov->periodo_socio()->v(), "SEPARACION DEL MVTO {$IDOpe} {$nuevoTotal}", $DMov->valor_afectacion()->v(), false, $DMov->socio_afectado()->v(), $DMov->docto_afectado()->v(), $DMov->fecha_afectacion()->v(), $DMov->fecha_vcto()->v(), $DMov->saldo_anterior()->v(), $DMov->saldo_actual()->v());
                    //listo
                    $nuevoTotal = 0;
                }
            } else {
                $arrops[$DMov->idoperaciones_mvtos()->v()] = $DMov->afectacion_real()->v();
            }
        }
        //$total	= $total  * -1;
        foreach ($arrops as $operacion => $monto) {
            $x = my_query("UPDATE operaciones_mvtos SET recibo_afectado={$idNRec} WHERE idoperaciones_mvtos={$operacion}");
            //100 - 50
            //$dif	= $monto - $total;
            $msg .= $x[SYS_INFO];
        }
        $NRec->setFinalizarRecibo(true);
        $msg .= $NRec->getMessages(OUT_TXT);
        $xRec->setFinalizarRecibo(true);
    } else {
        $msg .= "WARN\tNO SE MODIFICA NADA({$nuevoTotal}|{$total})\r\n";
    }
    $msg .= $xRec->getMessages(OUT_TXT);
    return $msg;
}