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}";
}
 $aCreditos = array();
 $aCaptacion = array();
 $aCompacW = array();
 $aCompacWC = array();
 //Array de cuentas compacw
 $cT = new cTipos();
 $msg .= "SOCIO\tAPUNTE\tSDOSAFE\tSDOCW\tDIFERENCIA\tOBSEVACIONES\r\n";
 $msgD .= "SOCIO\tSDOSAFE\tSDOCW\tDIFERENCIA\tCUENTA1\tSDO1\tCUENTA2\tSDO2\r\n";
 switch ($TipoDeImportacion) {
     case "credito":
         //carga ultimas fechas de saldos
         //Sql Creditos
         $sqlCreds = "SELECT\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio`,\n\t\t\t\t\t\t\t\t\t\tSUM(`creditos_solicitud`.`saldo_actual`) AS 'saldo',\n\t\t\t\t\t\t\t\t\t\tSUM(`creditos_solicitud`.`saldo_conciliado`) AS 'saldo_al_corte'\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud` `creditos_solicitud`\n\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`estatus_actual` != 50 \n\t\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio`\n\t\t\t\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`numero_socio`,\n\t\t\t\t\t\t\t\t\t\t`creditos_solicitud`.`saldo_actual` ";
         $rsC = mysql_query($sqlCreds, cnnGeneral());
         while ($rwC = mysql_fetch_array($rsC)) {
             $aCreditos[$rwC["numero_socio"]] += $cT->cFloat($rwC[$arrComp[$TipoDeComparacion]], 2);
             //$msg			.= "SAFE\tSocio: " . $rwC["numero_socio"] . " Saldo: " . $rwC["saldo_actual"] . " \r\n";
         }
         @mysql_free_result($rsC);
         break;
     case "ahorro":
         $sqlCreds = "SELECT\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.`numero_socio`,\n\t\t\t\t\t\t\t\t\t\tSUM(`captacion_cuentas`.`saldo_cuenta`) AS `saldo`, \n\t\t\t\t\t\t\t\t\t\tSUM(`captacion_cuentas`.`saldo_conciliado`) AS 'saldo_al_corte'\n\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas` \n\t\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.`numero_socio` ";
         $rsC = mysql_query($sqlCreds, cnnGeneral());
         while ($rwC = mysql_fetch_array($rsC)) {
             $aCaptacion[$rwC["numero_socio"]] += $cT->cFloat($rwC[$arrComp[$TipoDeComparacion]], 2);
             //$msg			.= "SAFE\tSocio: " . $rwC["numero_socio"] . " Saldo: " . $rwC["saldo_actual"] . " \r\n";
         }
         @mysql_free_result($rsC);
         break;
 }
 for ($i = 0; $i <= $lim; $i++) {
 $xLog = new cFileLog($aliasFil, true);
 if ($gestor) {
     while (!feof($gestor)) {
         $bufer = fgets($gestor, 4096);
         //$bufer			= stream_get_line($gestor, "\r\n");
         if (!isset($bufer)) {
             $msg .= "{$iReg}\t\tERROR\tLa Linea({$iReg}) no se leyo({$bufer})\r\n";
         } else {
             $bufer = trim($bufer);
             $datos = explode(",", $bufer, 6);
             //numero de socio //[numero de cuenta] //[FechaDeApertura] //[clave de producto] //saldo //[observaciones]
             $socio = $cT->cInt($datos[0]);
             $NumCuenta = $cT->cInt($datos[1]);
             $fechaApertura = $cT->cFecha($datos[2]);
             $Producto = $cT->cInt($datos[3]);
             $importe = $cT->cFloat($datos[4]);
             $observaciones = $cT->cChar($datos[5]);
             if ($NumCuenta == 0 or $NumCuenta == "") {
                 $NumCuenta = false;
             }
             //$ClaveCuenta	= false;
             //Iniciar el Socio
             //$msg .= "$iReg\t$socio\tERROR_SOCIO\t$socio -- $importe -- $fechaApertura -- $plazo -- $tasa -- $observaciones\r\n";
             $xCL = new cCajaLocal(99);
             if ($xCL->getExistenciaSocio($socio) <= 0) {
                 $msg .= "{$iReg}\t{$socio}\tERROR_SOCIO\tLa Linea({$iReg}) no se leyo por que no existe el socio. (" . substr($bufer, 0, 20) . ")\r\n";
             } else {
                 $xCta = new cCuentaALaVista($NumCuenta, $socio, 0, false, $fechaApertura);
                 if ($xCta->setContarCuenta() <= 0) {
                     $xCta = new cCuentaALaVista(false, $socio, 0, false, $fechaApertura);
                     $NumCuenta = $xCta->setNuevaCuenta(99, $Producto, $socio, $observaciones, DEFAULT_CREDITO, "", "", DEFAULT_GRUPO, $fechaApertura, 10);
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}";
}
 /**
  * Agrega un Movimiento a la Poliza Contable
  * @param integer $cuenta
  * @param float $cargo
  * @param float $abono
  * @param string $referencia
  * @param string $concepto
  * @param integer $NumMvto
  * @param date $Fecha
  */
 function addMovimiento($cuenta, $cargo = 0, $abono = 0, $referencia = "", $concepto = "", $NumMvto = false, $Fecha = false)
 {
     //if($this->mPolizaIniciada == false){ $this->init(); }
     $xT = new cTipos();
     $xLogg = new cCoreLog();
     $msg = "";
     $ejercicio = $this->mEjercicioPoliza;
     $periodo = $this->mPeriodoPoliza;
     $poliza = $this->mNumeroDePoliza;
     $tipo = $this->mTipoDePoliza;
     $NumMvto = setNoMenorQueCero($NumMvto);
     $this->mNumeroMvto = setNoMenorQueCero($this->mNumeroMvto);
     //$this->getFolioDeMvto();
     if ($NumMvto <= 1) {
         $NumMvto = $this->mNumeroMvto > 1 ? $this->mNumeroMvto + 1 : $this->getFolioDeMvto() + 1;
     }
     $cargo = $xT->cFloat($cargo, 2);
     $abono = $xT->cFloat($abono, 2);
     $xLogg->add("WARN\t----------------------------------------------\r\n", $xLogg->DEVELOPER);
     //Valores de los proximos Movimientos
     $TipoMvto = TM_CARGO;
     $monto = 0;
     $Fecha = $Fecha == false ? $this->mFechaPoliza : $Fecha;
     $concepto = $concepto == "" ? $this->mConceptoPoliza : $concepto;
     $referencia = trim($referencia);
     $diario = $this->mCentroDeCosto == false ? DEFAULT_CONTABLE_DIARIO_MVTOS : $this->mCentroDeCosto;
     $xCCont = new cCuentaContable($cuenta);
     $xCCont->init();
     $cuenta = $xCCont->get();
     if ($cargo > 0) {
         $TipoMvto = TM_CARGO;
         $monto = $cargo;
         $abono = 0;
         $this->mTotalCargos += $monto;
     } else {
         $TipoMvto = TM_ABONO;
         $monto = $abono;
         $cargo = 0;
         $this->mTotalAbonos += $monto;
     }
     //-------------------------------------------------------------------------------------------------------
     if ($monto != 0) {
         //-------------------------------------------------------------------------------------------------------
         $sqli_mvto = "INSERT INTO contable_movimientos(ejercicio, periodo, tipopoliza, numeropoliza, numeromovimiento,\n\t\t\t\t\t\tnumerocuenta, tipomovimiento, referencia, importe, diario, moneda, concepto, fecha, cargo, abono)\n\t\t\t\t\t\t    VALUES({$ejercicio}, {$periodo},\n\t\t\t\t\t\t    {$tipo}, {$poliza},\n\t\t\t\t\t\t    {$NumMvto}, {$cuenta},\n\t\t\t\t\t\t    '{$TipoMvto}', '{$referencia}',\n\t\t\t\t\t\t    {$monto}, {$diario}, 1,\n\t\t\t\t\t\t    '{$concepto}', '{$Fecha}',\n\t\t\t\t\t\t    {$cargo}, {$abono})";
         $rs = my_query($sqli_mvto);
         //setLog($sqli_mvto);
         if ($rs[SYS_ESTADO] == true) {
             $xLogg->add("{$NumMvto}\t{$cuenta}\t{$TipoMvto}\t{$cargo}\t{$abono}\t{$referencia}\r\n", $xLogg->DEVELOPER);
             $xCCont->setAfectarSaldos($TipoMvto, $monto, $periodo, $ejercicio, false);
             //Establecer Numeracion
             $this->mNumeroMvto = $NumMvto;
             $_SESSION[POLIZA_ID_ULTIMAOPERACION] = $NumMvto;
         } else {
             $xLogg->add("ERROR\t{$NumMvto}\tAl intentar insertar registro\r\n", $xLogg->DEVELOPER);
         }
     } else {
         $xLogg->add("ERROR\t{$NumMvto}\tNo existe un saldo que agregar\r\n", $xLogg->DEVELOPER);
     }
     $xLogg->add($xCCont->getMessages(), $xLogg->DEVELOPER);
     $xLogg->add($msg, $xLogg->DEVELOPER);
     $this->mMessages .= $xLogg->getMessages();
     return $xLogg->getMessages();
 }
 function set($arrValores)
 {
     if (is_array($arrValores)) {
         $xT = new cTipos();
         $this->mValor = isset($arrValores[SYS_MONTO]) ? $xT->cFloat($arrValores[SYS_MONTO]) : 0;
         $this->mNumero = isset($arrValores[SYS_NUMERO]) ? $xT->cFloat($arrValores[SYS_NUMERO]) : 0;
         $this->mMoneda = isset($arrValores[SYS_MONEDA]) ? $arrValores[SYS_MONEDA] : AML_CLAVE_MONEDA_LOCAL;
         $this->mArrData = $arrValores;
     }
 }
 function init()
 {
     $cT = new cTipos();
     $code = $this->mClaveDeConvenio;
     $sql = "SELECT * FROM creditos_tipoconvenio WHERE `idcreditos_tipoconvenio` = {$code} LIMIT 0,1";
     $this->mArrDatos = obten_filas($sql);
     $this->mTasaAhorro = $cT->cFloat($this->mArrDatos["tasa_ahorro"]);
     $this->mOB = new cCreditos_tipoconvenio();
     $this->mOB->setData($this->mArrDatos);
     $this->mTipoEnSistema = $this->mOB->tipo_en_sistema()->v();
     $this->mTipoDeIntegracion = $this->mOB->tipo_de_integracion()->v();
     $this->initOtrosDatos();
 }
 function setRegenerarSDPM($PFechaInicial, $PFechaFinal, $GenerarInteres = true, $incluirSinSaldo = false, $NumeroCuenta = false)
 {
     //		$PFechaFinal		= "";
     $mBase = 3100;
     $xT = new cTipos();
     $ql = new MQL();
     $BySaldo = $incluirSinSaldo == false ? " AND captacion_cuentas.saldo_cuenta >=" . TOLERANCIA_SALDOS : "";
     $ByCuentaSDPM = $NumeroCuenta == false ? "" : " AND `captacion_sdpm_historico`.`cuenta` = {$NumeroCuenta} ";
     $ByCuentaMvto = $NumeroCuenta == false ? "" : " AND `operaciones_mvtos`.`docto_afectado` = {$NumeroCuenta} ";
     $ByCuentaCta = $NumeroCuenta == false ? "" : " AND captacion_cuentas.numero_cuenta = {$NumeroCuenta} ";
     $msg = "";
     $msg .= "==========================================================================================\r\n";
     $msg .= "==================\tGenerando SDPM desde el {$PFechaInicial} al {$PFechaFinal}\r\n";
     $msg .= "==========================================================================================\r\n";
     $msg .= "Socio\tCuenta\tOPER\tEjercicio\tPeriodo\tFecha\tDias\tMonto\tSaldo\tSDPM\r\n";
     $sqlM = "SELECT \n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`fecha_operacion`  AS 'fecha_operacion',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado` AS 'recibo_afectado',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado` AS 'docto_afectado',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`afectacion_real` AS 'afectacion_real',\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos`.`valor_afectacion`,\n\t\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`afectacion` AS 'afectacion'\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos` \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\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\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` ={$mBase})\n\t\t\t\t\t\t\t\t\t{$ByCuentaMvto}\n\t\t\t\t\t\t\t\tORDER BY\n\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`operaciones_mvtos`.`fecha_operacion` ASC";
     $rsM = getRecordset($sqlM);
     $arrOps = array();
     //Array de montos de operacion
     $arrRecs = array();
     //Array de Recibos de Operacion
     while ($rwM = mysql_fetch_array($rsM)) {
         //clave cuenta fecha
         $cuenta = $rwM["docto_afectado"];
         $fecha = $rwM["fecha_operacion"];
         if (isset($arrOps[$cuenta . "-" . $fecha])) {
             $arrOps[$cuenta . "-" . $fecha] += $rwM["afectacion_real"] * $rwM["afectacion"];
         } else {
             $arrOps[$cuenta . "-" . $fecha] = $rwM["afectacion_real"] * $rwM["afectacion"];
         }
         $arrRecs[$cuenta . "-" . $fecha] = $rwM["recibo_afectado"];
         //$msg					.= "WARN\t$cuenta\tAgregar " . ($rwM["afectacion_real"] * $rwM["afectacion"] ) . "\r\n";
     }
     //Eliminar periodos anteriores
     $sqlDF = "DELETE FROM captacion_sdpm_historico WHERE (fecha>='{$PFechaInicial}' AND fecha<='{$PFechaFinal}') {$ByCuentaSDPM} ";
     my_query($sqlDF);
     //FECHAS
     $xF = new cFecha(0);
     //
     $xTbl = new cSAFETabla(TCAPTACION_CUENTAS);
     $sqlCX = $xTbl->getQueryInicial() . " WHERE captacion_cuentas.tipo_cuenta = " . CAPTACION_TIPO_VISTA . " {$BySaldo} {$ByCuentaCta} ";
     $rs1 = getRecordset($sqlCX);
     while ($rw1 = mysql_fetch_array($rs1)) {
         $socio = $rw1["numero_socio"];
         $cuenta = $rw1["numero_cuenta"];
         $xCta = new cCuentaALaVista($cuenta, $socio);
         $xCta->init($rw1);
         $DCta = $xCta->getDatosInArray();
         $FApertura = $DCta["fecha_apertura"];
         $dias = $xF->setRestarFechas($PFechaFinal, $FApertura);
         $dias += 1;
         $sucursal = $DCta["sucursal"];
         $FechaAnterior = $FApertura;
         $saldoAnterior = 0;
         $xF2 = new cFecha(1);
         for ($i = 0; $i <= $dias; $i++) {
             $OpFecha = $xF->setSumarDias($i, $FApertura);
             $xF->set($OpFecha);
             $OpFechaFin = $xF->getDiaFinal();
             $OpMonto = isset($arrOps[$cuenta . "-" . $OpFecha]) ? $arrOps[$cuenta . "-" . $OpFecha] : 0;
             $idrecibo = isset($arrRecs[$cuenta . "-" . $OpFecha]) ? $arrRecs[$cuenta . "-" . $OpFecha] : DEFAULT_RECIBO;
             //si la operacion es mayor a cero o es FIN DE MES
             if ($OpMonto != 0 or $OpFecha == $OpFechaFin) {
                 $diasTrans = $xF2->setRestarFechas($OpFecha, $FechaAnterior);
                 $xF2->set($OpFecha);
                 $ejercicio = $xF2->anno();
                 $periodo = $xF2->mes();
                 $sdpd = $saldoAnterior * $diasTrans;
                 $nuevatasa = $xCta->getTasaAplicable(0, 0, $saldoAnterior);
                 //corregir fecha
                 $sqlUSPM = "INSERT INTO captacion_sdpm_historico\n\t\t\t\t\t\t\t\t\t\t(ejercicio, periodo, cuenta, fecha, dias, tasa, monto, recibo, numero_de_socio, sucursal)\n\t    \t\t\t\t\t\t\t\tVALUES( {$ejercicio}, {$periodo}, {$cuenta}, '{$OpFecha}', {$diasTrans}, {$nuevatasa}, {$sdpd}, {$idrecibo}, {$socio}, '{$sucursal}') ";
                 //si es valida la operacion, se actualizan
                 if ($OpFecha >= $PFechaInicial and $OpFecha <= $PFechaFinal) {
                     my_query($sqlUSPM);
                     $msg .= "{$socio}\t{$cuenta}\t+SDPM\t{$ejercicio}\t{$periodo}\t{$OpFecha}\t{$diasTrans}\t{$OpMonto}\t{$saldoAnterior}\t{$sdpd}\r\n";
                 } else {
                     $msg .= "{$socio}\t{$cuenta}\t=SDPM\t{$ejercicio}\t{$periodo}\t{$OpFecha}\t{$diasTrans}\t{$OpMonto}\t{$saldoAnterior}\t{$sdpd}\r\n";
                 }
                 $FechaAnterior = $OpFecha;
                 $saldoAnterior += $OpMonto;
             }
         }
     }
     //Agregar Movimientos Finales del MES.
     //FIXME: Corregir incidencias
     //opcional: agregar Interes
     if ($GenerarInteres == true) {
         $xRec = new cReciboDeOperacion(12, false);
         $recibo = $xRec->setNuevoRecibo(DEFAULT_SOCIO, 1, $PFechaFinal, 1, 12, "REGENERAR_INTERES_SDPM_{$PFechaFinal}", "NA", "ninguno", "NA", DEFAULT_GRUPO);
         $msg .= "==========================================================================================\r\n";
         $msg .= "==================\tAGREGADO INTERES :: RECIBO {$recibo}\r\n";
         $msg .= "==========================================================================================\r\n";
         $_SESSION["recibo_en_proceso"] = $recibo;
         //sumar sdpm del mes por cuenta
         $sqlSDPM = "SELECT\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`numero_de_socio`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`,\n\t\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`dias`)  AS `dias_transcurridos`,\n\t\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`monto`) AS `sdpm`,\n\t\t\t\t\t\t\t\tROUND( (`captacion_sdpm_historico`.`monto` / `captacion_sdpm_historico`.`dias`), 2) AS `ultimo_saldo`,\n\t\t\t\t\t\t\t\tMAX(`captacion_sdpm_historico`.`fecha`) AS 'UltimaFecha'\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico` `captacion_sdpm_historico` \n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` >= '{$PFechaInicial}')\n\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` <= '{$PFechaFinal}')\n\t\t\t\t\t\t\t\t{$ByCuentaSDPM}\n\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`ejercicio`,\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`periodo`\n\t\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\t\t`captacion_sdpm_historico`.`fecha` DESC ";
         $rsCAP = $ql->getDataRecord($sqlSDPM);
         //setLog($sqlSDPM);
         foreach ($rsCAP as $rwC) {
             $socio = $rwC["numero_de_socio"];
             $cuenta = $rwC["cuenta"];
             $dias_de_calc = $rwC["dias_transcurridos"];
             $sumaSDPM = $rwC["sdpm"];
             $FechaI = $rwC["UltimaFecha"];
             $promedio = $xT->cFloat($sumaSDPM / $dias_de_calc, 2);
             //XXX: Solucionar Tasa de Interes y hacer las rapida la consulta
             $xCta = new cCuentaDeCaptacion($cuenta);
             $xCta->init();
             $subtipo = $xCta->getTipoDeSubproducto();
             $tasa_nueva = obtentasa($promedio, CAPTACION_TIPO_VISTA, 0, $subtipo);
             $interes = $sumaSDPM * $tasa_nueva / EACP_DIAS_INTERES;
             $interes = $xT->cFloat($interes, 2);
             //agregar movimiento
             if ($interes > 0) {
                 setNuevoMvto($socio, $cuenta, $recibo, $FechaI, $interes, 222, 1, "CALCULO_AUTOMATICO_DESDE_{$PFechaInicial}");
                 $msg .= "{$socio}\t{$cuenta}\tAGREGAR\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n";
             } else {
                 $msg .= "{$socio}\t{$cuenta}\tIGNORAR\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n";
             }
         }
     }
     return $msg;
 }
if ($permiso === false) {
    header("location:../404.php?i=999");
}
$_SESSION["current_file"] = addslashes($theFile);
//=====================================================================================================
$xHP = new cHPage("", HP_FORM);
$xF = new cFecha();
$xT = new cTipos();
$DDATA = $_REQUEST;
$action = isset($DDATA["cmd"]) ? $DDATA["cmd"] : SYS_NINGUNO;
$cargar = isset($DDATA["item"]) ? $DDATA["item"] : "";
$origen = isset($DDATA["origen"]) ? $DDATA["origen"] : SYS_NINGUNO;
$recibo = isset($DDATA["idrecibo"]) ? $DDATA["idrecibo"] : DEFAULT_RECIBO;
$operacion = isset($DDATA["idoperacion"]) ? $DDATA["idoperacion"] : SYS_UNO;
$tipoDeExposicion = isset($DDATA["ctipo_pago"]) ? $DDATA["ctipo_pago"] : DEFAULT_TIPO_PAGO;
$monto = isset($DDATA["idmonto"]) ? $xT->cFloat($DDATA["idmonto"]) : 0;
$MontoOperacion = isset($DDATA["idmontooperado"]) ? $DDATA["idmontooperado"] : $monto;
$MontoCambio = isset($DDATA["idmontocambio"]) ? $DDATA["idmontocambio"] : 0;
$banco = isset($DDATA["idbanco"]) ? $DDATA["idbanco"] : 99;
//FALLBACK_BANCO
$cheque = isset($DDATA["idcheque"]) ? $DDATA["idcheque"] : DEFAULT_CHEQUE;
$CuentaBancaria = isset($DDATA["idcuenta"]) ? $DDATA["idcuenta"] : DEFAULT_CUENTA_BANCARIA;
$documento = isset($DDATA["iddoctodescontado"]) ? $DDATA["iddoctodescontado"] : DEFAULT_CREDITO;
$observaciones = isset($DDATA["idobservaciones"]) ? $DDATA["idobservaciones"] : "";
$fecha = isset($DDATA["idfecha-0"]) ? $xF->getFechaISO($DDATA["idfecha-0"]) : fechasys();
$msg = isset($DPDATA[SYS_MSG]) ? $DPDATA[SYS_MSG] : "";
$hora = date("H:i");
//$msg		.= "MONTO $monto .... " . $DDATA["idmonto"] ;
if ($monto > 0) {
    $xCaja = new cCaja();
    /*
 }
 $socio = DEFAULT_SOCIO;
 $credito = DEFAULT_CREDITO;
 $letras = 0;
 $capital = 0;
 $interes = 0;
 $ahorro = 0;
 $iva = 0;
 $cls = '';
 $observaciones = "";
 $cadena = explode(",", trim($bufer), 8);
 //Depurar
 $socio = $xT->cInt($cadena[0]);
 $credito = $xT->cInt($cadena[1]);
 $letra = $xT->cInt($cadena[2]);
 $capital = round($xT->cFloat($cadena[3]), 2);
 $interes = round($xT->cFloat($cadena[4]), 2);
 $iva = round($xT->cFloat($cadena[5]), 2);
 $ahorro = round($xT->cFloat($cadena[6]), 2);
 $observaciones = $xT->cChar($cadena[7]);
 $total = $capital + $ahorro + $interes + $iva;
 if (isset($socio) and isset($credito) and !empty($socio) and !empty($credito)) {
     $DSoc = new cSocio($socio);
     $SocioExiste = $DSoc->existe($socio);
     $CreditoExiste = $DSoc->existeCredito($credito);
     if ($SocioExiste == true and $CreditoExiste == true) {
         $DSoc->init();
         $nombre = $DSoc->getNombreCompleto();
         $nombre = substr($nombre, 0, 25);
         //Verificar el Saldo del Credito
         $CCred = new cCredito($credito, $socio);
 //=============================================================================================
 if ($gestor) {
     while (!feof($gestor)) {
         $bufer = fgets($gestor, 4096);
         //$bufer			= stream_get_line($gestor, "\r\n");
         if (!isset($bufer)) {
             //$msg .= "$iReg\t\tERROR\tLa Linea($iReg) no se leyo($bufer)\r\n";
         } else {
             $bufer = trim($bufer);
             $datos = explode(",", $bufer, 8);
             $fecha = trim($datos[0]);
             $tipoPoliza = trim($datos[1]);
             $numPoliza = trim($datos[2]);
             $concepto = trim($datos[3]);
             $referencia = trim($datos[4]);
             $mcargo = $cT->cFloat($datos[5]);
             //$cargo			= trim($datos[5]);
             $mabono = $cT->cFloat($datos[6]);
             //$abono			= trim($datos[6]);
             //ignorar linea 1
             if ($iReg >= 1) {
                 $arrInfo[$iReg] = "{$fecha},{$tipoPoliza},{$numPoliza},{$concepto},{$referencia}";
                 if ($mcargo > 0) {
                     $arrCargos[$iReg] = $mcargo;
                 }
                 if ($mabono > 0) {
                     $arrAbonos[$iReg] = $mabono;
                 }
             }
         }
         $iReg++;
    header("Content-type: application/x-msdownload");
    header("Content-Disposition: attachment; filename={$filename}");
    header("Pragma: no-cache");
    header("Expires: 0");
}
//Tipos de Conversion
$xTip = new cTipos();
//Obtener por consulta el SDPM
//Obtener por consulta los Mvtos
$sqlM = "SELECT\n\t`operaciones_mvtos`.`docto_afectado` AS 'cuenta',\n\t`operaciones_mvtos`.`fecha_afectacion`,\n\tDATE_FORMAT(`operaciones_mvtos`.`fecha_afectacion`, '%d') AS 'dia',\n\tSUM(`operaciones_mvtos`.`afectacion_real` * `eacp_config_bases_de_integracion_miembros`.`afectacion` ) AS `monto`\nFROM\n\t`operaciones_mvtos` `operaciones_mvtos` \n\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros` \n\t\t`eacp_config_bases_de_integracion_miembros` \n\t\tON `operaciones_mvtos`.`tipo_operacion` = \n\t\t`eacp_config_bases_de_integracion_miembros`.`miembro` \nWHERE\n\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 2602) AND\n\t(`operaciones_mvtos`.`fecha_afectacion` >='{$fecha_inicial}') \n\tAND\n\t(`operaciones_mvtos`.`fecha_afectacion` <='{$fecha_final}') \n\t{$BySucursal}\nGROUP BY\n\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t`operaciones_mvtos`.`docto_afectado`,\n\t`operaciones_mvtos`.`fecha_afectacion` \nORDER BY\n\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t`operaciones_mvtos`.`fecha_afectacion` ";
//Arrays de mvtos y otros tipos
$arrMvtos = array();
$arrSums = array();
$rs = mysql_query($sqlM, cnnGeneral());
while ($rw = mysql_fetch_array($rs)) {
    $arrMvtos[$rw["cuenta"]][$rw["dia"]] = $xTip->cFloat($rw["monto"], 2);
}
//Sql de las cuentas
$sqlC = "SELECT\n\t`socios_general`.`codigo`,\n\tCONCAT(`socios_general`.`apellidopaterno`, ' ',\n\t`socios_general`.`apellidomaterno`, ' ',\n\t`socios_general`.`nombrecompleto`) AS 'nombre',\n\t`captacion_cuentas`.`numero_cuenta`,\n\t`captacion_cuentas`.`saldo_cuenta` \nFROM\n\t`captacion_cuentas` `captacion_cuentas` \n\t\tINNER JOIN `socios_general` `socios_general` \n\t\tON `captacion_cuentas`.`numero_socio` = `socios_general`.`codigo`\nWHERE\n\t(`captacion_cuentas`.`tipo_cuenta` =10)\n\tORDER BY\n\t\t`socios_general`.`codigo`,\n\t\t`captacion_cuentas`.`numero_cuenta`,\n\t\t`captacion_cuentas`.`saldo_cuenta`\t";
//imprimir la tabla
//Header
$tdH = "";
$thB = "";
//sumas
$sumVars = 0;
$sumSInit = 0;
$sumSFin = 0;
$tdH .= "<table width='100%' align='center' border='0'>\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Socio</th>\n\t\t\t\t\t<th>Nombre</th>\n\t\t\t\t\t<th>Cuenta</th>\n\t\t\t\t\t";
for ($i = 1; $i <= $dia_final; $i++) {
    $tdH .= "<th>" . $i . "</th>";
    //inicializa el array de totales
 function setReestructurarSDPM($SoloConSaldos = false, $credito = false, $forzarTodos = false, $fechaCorte = false, $fechaInicial = false, $EliminarTodo = true)
 {
     //FIXME: probar con saldo anterior
     $fechaCorte = $fechaCorte == false ? fechasys() : $fechaCorte;
     $msg = "";
     $wCredito1 = $credito != false ? "  `creditos_mvtos_asdpm`.`documento` = {$credito}" : " `documento` > 0 ";
     $wCredito2 = $credito != false ? "  numero_de_credito = {$credito} " : " numero_de_credito > 0";
     $ByRTM = $credito != false ? " " : " SQL_CACHE ";
     $wFecha1 = " AND (fecha >='{$fechaInicial}' AND fecha <='{$fechaCorte}' ) ";
     $wFecha2 = " AND (`fecha_actual` >= '{$fechaInicial}' AND `fecha_actual`<='{$fechaCorte}' ) ";
     $ql = new MQL();
     $arrEstatusD = array(OPERACION_CLAVE_MINISTRACION, 111, 114, 115);
     $arrEstatus = array(OPERACION_CLAVE_MINISTRACION => CREDITO_ESTADO_VIGENTE, 111 => CREDITO_ESTADO_VENCIDO, 114 => CREDITO_ESTADO_VIGENTE, 115 => CREDITO_ESTADO_MOROSO);
     //Eliminar el SDPM
     if ($EliminarTodo == true) {
         $DAction = $ql->setRawQuery("DELETE FROM creditos_sdpm_historico WHERE {$wCredito2} {$wFecha2} ");
         if (MODO_DEBUG == true) {
             $msg .= "WARN\tEliminando SDPM\r\n";
         }
     }
     if ($credito != false) {
         $ql->setRawQuery("DELETE FROM operaciones_mvtos WHERE docto_afectado={$credito} AND tipo_operacion = 420");
         if (MODO_DEBUG == true) {
             $msg .= "WARN\tEliminando Operaciones 420 del credito {$credito}\r\n";
         }
     }
     $msg .= "Socio\tCredito\tFecha\tMonto\tSaldo\tDias\tOperacion\tEstatus\tInteres\tMoratorios\r\n";
     //Generar saldos de credito por mes
     $sql = "SELECT {$ByRTM}\n\t\t`creditos_mvtos_asdpm`.`socio`,\n\t\t`creditos_mvtos_asdpm`.`documento`,\n\t\t`creditos_mvtos_asdpm`.`recibo`,\n\t\t`creditos_mvtos_asdpm`.`fecha`,\n\t\t`creditos_mvtos_asdpm`.`operacion`,\n\t\t`creditos_mvtos_asdpm`.`monto`,\n\t\t`creditos_mvtos_asdpm`.`afectacion`\n\t\tFROM `creditos_mvtos_asdpm`\tWHERE {$wCredito1} {$wFecha1} ";
     //setLog($sql);
     $rsM = $ql->getDataRecord($sql);
     $saldo = 0;
     $creditoA = 0;
     $xT = new cTipos();
     $xF = new cFecha();
     $FECHA_DE_ULTIMO_PAGO = "1998-01-01";
     $CREDITO_SALDO_ANTERIOR = 0;
     $MvtoAnterior = OPERACION_CLAVE_MINISTRACION;
     $ESTADO_ACTUAL = CREDITO_ESTADO_VIGENTE;
     $DIVISOR_DE_INTERESES = EACP_DIAS_INTERES;
     $DCred = array();
     $IsCredNew = true;
     $xCred = null;
     foreach ($rsM as $rw) {
         $socio = $xT->cInt($rw["socio"]);
         $credito = $xT->cInt($rw["documento"]);
         $fecha = $rw["fecha"];
         $nota = "";
         //
         $IsCredNew = true;
         if ($creditoA != $credito) {
             $saldo = 0;
             $FECHA_DE_ULTIMO_PAGO = $fecha;
             $ESTADO_ACTUAL = CREDITO_ESTADO_VIGENTE;
             $xCred = new cCredito($credito, $socio);
             $xCred->init();
             $DCred = $xCred->getDatosDeCredito();
             $CREDITO_SALDO_ANTERIOR = 0;
             //si es Ministracion
             if ($MvtoAnterior == OPERACION_CLAVE_MINISTRACION) {
                 $FECHA_DE_ULTIMO_PAGO = $xCred->getFechaDeMinistracion();
             }
             $msg .= "------------------------\tNUEVO_CREDITO : {$credito}------------------------------\r\n";
             if ($EliminarTodo == false) {
                 my_query("DELETE FROM creditos_sdpm_historico WHERE numero_de_credito = {$credito} {$wFecha2}");
             }
         } else {
             $IsCredNew = false;
         }
         $OProd = $xCred->getOProductoDeCredito();
         $recibo = $rw["recibo"];
         $operacion = $rw["operacion"];
         $afectacion = $rw["afectacion"];
         $monto = $xT->cFloat($rw["monto"], 2);
         $periocidad = $xCred->getPeriocidadDePago();
         $FechaVencimiento = $xCred->getFechaDeVencimiento();
         //(!isset( $DCred["fecha_vencimiento_dinamico"])) ? $xCred->getFechaDeVencimiento() : $DCred["fecha_vencimiento_dinamico"];
         $DiaInteresMax = $xF->setSumarDias(INTERES_DIAS_MAXIMO_A_DEVENGAR, $FechaVencimiento);
         $dias_transcurridos = $xF->setRestarFechas($fecha, $FECHA_DE_ULTIMO_PAGO);
         $saldo_calculado = $dias_transcurridos * $saldo;
         //No poner la afectacion
         $saldo += $xT->cFloat($monto * $afectacion, 2);
         // si es normal, calcular normal, si es mora: Calcular mora y normal, si es vencido: calcular normal y mora
         $interes = 0;
         $moratorio = 0;
         $TASA_NORMAL = $xCred->getTasaDeInteres();
         $TASA_MORA = $xCred->getTasaDeMora();
         $TIPO_DE_PAGO = $xCred->getTipoDePago();
         $PAGOS_SIN_CAPITAL = $xCred->getPagosSinCapital();
         $MONTO_ORIGINAL_DE_CREDITO = $xCred->getMontoAutorizado();
         $saldoBase = $xT->cFloat($saldo, 2);
         if ($operacion == OPERACION_CLAVE_PAGO_CAPITAL and $saldo == 0) {
             $saldoBase = $CREDITO_SALDO_ANTERIOR;
         }
         if ($MvtoAnterior == OPERACION_CLAVE_MINISTRACION) {
             $saldoBase = $CREDITO_SALDO_ANTERIOR;
             $saldo_calculado = $dias_transcurridos * $CREDITO_SALDO_ANTERIOR;
         }
         $SALDO_ACTUAL = $xCred->getSaldoActual();
         $BASE_NORMAL = $saldo_calculado;
         $BASE_MORA = $saldo_calculado;
         eval($OProd->getPreModInteres());
         //considerar si es un maximo de x dias devengar en vencidos
         switch ($ESTADO_ACTUAL) {
             case CREDITO_ESTADO_VIGENTE:
                 $interes = $BASE_NORMAL * $TASA_NORMAL / $DIVISOR_DE_INTERESES;
                 break;
             case CREDITO_ESTADO_VENCIDO:
                 //validar si tiene un maximo de dias transcurridos de devengado
                 if ($xF->getInt($fecha) <= $xF->getInt($DiaInteresMax)) {
                     $interes = $BASE_NORMAL * $TASA_NORMAL / $DIVISOR_DE_INTERESES;
                     $moratorio = $BASE_MORA * $TASA_MORA / $DIVISOR_DE_INTERESES;
                 } else {
                     $interes = 0;
                     $moratorio = 0;
                     $nota = "Despues del {$DiaInteresMax} no se acumula Interes, Vencimiento : {$FechaVencimiento}";
                 }
                 break;
             case CREDITO_ESTADO_MOROSO:
                 $interes = $BASE_NORMAL * $TASA_NORMAL / $DIVISOR_DE_INTERESES;
                 $moratorio = $BASE_MORA * $TASA_MORA / $DIVISOR_DE_INTERESES;
                 break;
         }
         //END_SWITCH
         $interes = $xT->cFloat($interes, 2);
         if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
             $moratorio = $xT->cFloat($moratorio, 2);
             //0; //2012-04-10
         } else {
             //$moratorio			= 0;
         }
         eval($OProd->getPosModInteres());
         $msg .= "{$socio}\t{$credito}\t{$fecha}\t{$monto}\t{$saldo}\t{$dias_transcurridos}\t{$operacion}\t{$ESTADO_ACTUAL}\t{$interes}\t{$moratorio}\t{$nota}\r\n";
         if ($xF->getInt($fecha) <= $xF->getInt(SYS_FECHA_DE_MIGRACION)) {
             $interes = 0;
             $moratorio = 0;
             if (MODO_DEBUG == true) {
                 $msg .= "WARN\tOMITIR Interes {$interes} y MORA por {$moratorio} por estar antes de la migracion {$fecha}\r\n";
             }
         }
         if ($xF->getInt($fecha) <= $xF->getInt($fechaCorte)) {
             $msgSDPM = $xCred->addSDPM($interes, $moratorio, $FECHA_DE_ULTIMO_PAGO, $saldo, $ESTADO_ACTUAL, $fecha, $operacion, $saldo_calculado);
             //if(MODO_DEBUG == true){ $msg	.= $msgSDPM;	}
         }
         if ($saldo <= TOLERANCIA_SALDOS) {
             $msg .= "------------------------------------------------------\r\n";
         }
         $creditoA = $credito;
         $FECHA_DE_ULTIMO_PAGO = $fecha;
         $CREDITO_SALDO_ANTERIOR = $saldo;
         $MvtoAnterior = $operacion;
         /*
          * si existe la operacion de cambio de estatus, validar en el array, y actualizar el valor
          * Este estatus se aplicara en el siguiente
          */
         if (in_array($operacion, $arrEstatusD)) {
             $ESTADO_ACTUAL = $arrEstatus[$operacion];
         }
     }
     return $msg;
 }
$arrINTS = array(420);
if ($xCred->getRespetarPlanDePago() == false) {
    $arrINTS = array(411, 413, 420, 412);
}
if ($monto_a_operar <= 0) {
    $xLog->add("WARN\tNecesita un Monto a Operar, que debe ser el efectivo que el socio trae \r\n", $xLog->COMMON);
}
/**
 * Obtiene los Movimientos mediante una Sentencia SQL
 *
 */
$rsm = $ql->getDataRecord($SQLBody);
foreach ($rsm as $rwm) {
    $pendiente = 0;
    $title = $rwm["descripcion_operacion"];
    $monto = $xT->cFloat($rwm["total_operacion"], 2);
    $MTipo = $rwm["tipo_operacion"];
    $cls = "";
    $xLog->add("WARN\tIX\tEl Movimiento es {$MTipo}\r\n", $xLog->DEVELOPER);
    //Omite los Intereses Pactados y tod lo concerniente al credito segun la base
    if (in_array($MTipo, $arrINTS)) {
        $xLog->add("WARN\t{$MTipo}\tINTERES\tEl Monto por {$monto} Del Movimiento {$MTipo} se lleva a CERO\r\n", $xLog->DEVELOPER);
        $monto = 0;
    }
    if ($MTipo == OPERACION_CLAVE_PLAN_INTERES) {
        if ($xCred->getPagosSinCapital() == true and $xF->getInt($fecha_operacion) < $xF->getInt($fecha_de_pago)) {
            $interes_calculado = $interes_normal_devengado - $interes_normal_pagado + $interes_normal_calculado;
            if ($monto > $interes_calculado) {
                $xLog->add("WARN\t{$MTipo}\tINT.DEV\tInteres de la Letra Ajustado de {$monto} a {$interes_calculado} por ser menos\r\n", $xLog->COMMON);
                $monto = $interes_calculado > 0 ? $interes_calculado : 0;
                $cls = " class='warn' ";
 $fecha_operacion = $xCred->getFechaDeMinistracion();
 if ($xCred->getNumeroDePlanDePagos() != false) {
     $xPlan->init($xCred->getNumeroDePlanDePagos());
     $xPlan->setEliminar();
 }
 $xPlan->initByCredito($credito);
 $xPlan->setClaveDeCredito($credito);
 $xPlan->setClaveDePersona($xCred->getClaveDePersona());
 $idrecibo = $xPlan->add($observaciones, $fecha_operacion);
 $xPlan->init($idrecibo);
 foreach ($data as $valores => $cont) {
     //periodo 	fecha 	saldo_inicial 	intereses 	impuesto 	capital 	pago_total 	saldo_final
     //0		1	2		3		4		5		6		7
     //Periodo,Fecha de Pago,Saldo inicial,Intereses,Impuesto,Pago a Capital,Pago Total,Saldo final
     if ($xT->cInt($cont[0]) > 0) {
         $interes = $xT->cFloat($cont[3], 2);
         $fecha = $xF->getFechaISO($cont[1]);
         $periodo = $xT->cInt($cont[0]);
         $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";
     }
 function getListadoDeCobranza($empresa, $periocidad, $variacion, $periodo, $fechaInicial = false, $fechaFinal = false, $uso = false)
 {
     $ByPeriodo = $periocidad == "todos" ? "" : " AND creditos_solicitud.periocidad_de_pago = {$periocidad} ";
     $xF = new cFecha();
     $fechaFinal = $xF->getFechaISO($fechaFinal);
     $fechaInicial = $xF->getFechaISO($fechaInicial);
     $xQl = new MQL();
     $xEmp = new cEmpresas($empresa);
     $creditoON = array();
     $DDias = $xEmp->getDiasDeAviso();
     $sqletras = "SELECT\t`creditos_solicitud`.`persona_asociada`, `letras`.* \n\t\t\t\t\t\tFROM\t`creditos_solicitud` `creditos_solicitud`\t\tINNER JOIN `letras` `letras`\tON `creditos_solicitud`.`numero_solicitud` = `letras`.`docto_afectado` \n    \t\t\t\t\tWHERE\t(`creditos_solicitud`.`persona_asociada` ={$empresa}) ";
     //setLog($sqletras);
     $rsCal = $xQl->getDataRecord($sqletras);
     $DCal = array();
     foreach ($rsCal as $dscal) {
         $ixcredito = $dscal["docto_afectado"];
         $ixperiodo = $dscal["periodo_socio"];
         $DCal["{$ixcredito}-{$ixperiodo}"] = $dscal["letra"];
     }
     $ByMinistracion = "";
     $periodo = $periodo + $variacion;
     //filtrar domicilio -> socio -> credito -> letra
     $sql = "SELECT\n    creditos_solicitud.numero_socio AS 'persona',\n    CONCAT(\n    (CASE WHEN (socios_general.dependencia != creditos_solicitud.persona_asociada) THEN '(*)' ELSE '' END ), \n    socios_general.nombrecompleto, ' ',\n    socios_general.apellidopaterno, ' ',\n    socios_general.apellidomaterno \n\t) AS 'nombre', \n\n    creditos_solicitud.numero_solicitud AS 'credito',\n    \n\tgetParcialidadPorFecha(ultimo_periodo_afectado, {$variacion}, '{$fechaFinal}', `primeras_letras`.`fecha_de_pago`, fecha_ministracion) AS 'letra',\n   `creditos_solicitud`.`pagos_autorizados`  AS 'pagos',\n   \n    creditos_solicitud.monto_parcialidad AS 'monto'\n\tFROM\n\t\t`creditos_solicitud` `creditos_solicitud` \n\t\t\tINNER JOIN `creditos_periocidadpagos` `creditos_periocidadpagos` \n\t\t\tON `creditos_solicitud`.`periocidad_de_pago` = \n\t\t\t`creditos_periocidadpagos`.`idcreditos_periocidadpagos` \n\t\t\t\tINNER JOIN `primeras_letras` `primeras_letras` \n\t\t\t\tON `creditos_solicitud`.`numero_solicitud` = `primeras_letras`.\n\t\t\t\t`docto_afectado` \n\t\t\t\t\tINNER JOIN `socios_general` `socios_general` \n\t\t\t\t\tON `creditos_solicitud`.`numero_socio` = `socios_general`.\n\t\t\t\t\t`codigo`\n    \n    WHERE \n    `creditos_solicitud`.persona_asociada\t= {$empresa}\n    AND saldo_actual > " . TOLERANCIA_SALDOS . "\n    AND (`primeras_letras`.`fecha_de_pago` <= '{$fechaFinal}'  OR creditos_solicitud.ultimo_periodo_afectado >= 2)\n    {$ByPeriodo}\n    AND (creditos_solicitud.ultimo_periodo_afectado+(1+({$variacion}))) > 0\n    AND (creditos_solicitud.ultimo_periodo_afectado+(1+({$variacion}))) <= creditos_solicitud.pagos_autorizados\n    ORDER BY ultimo_periodo_afectado DESC, fecha_ministracion,\n\tsocios_general.nombrecompleto\n    ";
     //setLog($sql);
     $dato = $xQl->getDataRecord($sql);
     $tr = "";
     $xBt = new cHImg();
     $ixx = 1;
     $numero = 0;
     $suma = 0;
     $xT = new cTipos();
     foreach ($dato as $rw) {
         $credito = $rw["credito"];
         $creditoON[$credito] = $credito;
         $letra = $rw["letra"];
         $lmonto = $xT->cFloat($rw["monto"], 2);
         $numero++;
         $suma += $lmonto;
         $cssN = "";
         $notas = "";
         $cls = $ixx == 2 ? " class='trOdd' " : "";
         $dif = 0;
         if (isset($DCal["{$credito}-{$letra}"])) {
             $dlmonto = round($DCal["{$credito}-{$letra}"], 2);
             $dif = round($dlmonto - $lmonto, 2);
             if ($dif != 0) {
                 if ($dif > 0.01 or $dif < -0.01) {
                     $notas = "Diferencia por {$dif} en la Parcialidad {$letra}, Plan de Pagos : " . $dlmonto . " Monto de Parcialidad : " . $lmonto;
                     $cls = " class='warn' ";
                 } else {
                     //+01 -01
                     $lmonto = round($dlmonto, 2);
                     $cls = " class='warn' ";
                 }
             }
         }
         $td = "<tr{$cls} id='tr-{$credito}'>";
         $td .= "<th>" . $rw["persona"] . "</th>";
         $td .= "<td>" . $rw["nombre"] . "</td>";
         $td .= "<td>" . $rw["credito"] . "</td>";
         $td .= "<td><input type=\"number\" id=\"periodo-{$credito}\" value=\"" . $rw["letra"] . "\" /></td>";
         $td .= "<th>" . $rw["pagos"] . "</th>";
         $td .= "<td><input type=\"number\" id=\"monto-{$credito}\" value=\"" . $lmonto . "\" /></td>";
         $td .= "<td><input type=\"text\" id=\"notas-{$credito}\" value=\"" . "" . "\"/></td>";
         //$td		.= "<td><input type=\"number\" id=\"saldo-$credito\" value=\"" . $rw["monto"] . "\" /></td>";
         $td .= "<td class='toolbar-24' id=\"options-{$credito}\">";
         $td .= $xBt->get24("calendar.png", " onclick=\"getPlanDePagos(" . $rw["credito"] . ")\" ");
         $td .= $xBt->get24("day.png", " onclick=\"generarPlanDePagos(" . $rw["credito"] . ")\" ");
         $td .= $xBt->get24("order.png", " onclick=\"getEstadoDeCuenta(" . $rw["credito"] . ")\" ");
         $td .= $xBt->get24("link.png", " onclick=\"desvincular(" . $rw["credito"] . ")\" ");
         $td .= "<div class='coolCheck'><input type='checkbox' id='chk_{$credito}' onclick='jsSetAlimentarEnvio(this, " . $rw["credito"] . ")' /><label for='chk_{$credito}'></label></div>";
         if ($dif == 0) {
             $td .= $xBt->get24("view.png", " onclick=\"setOcultar(" . $rw["credito"] . ")\" ");
         }
         $td .= "</td>";
         $td .= "</tr>";
         $ixx = $ixx >= 2 ? 1 : $ixx + 1;
         if ($notas != "") {
             $td .= "<tr><td class='aviso' colspan='8'>{$notas}</td></tr>";
         }
         $tr .= $td;
     }
     //filtrar domicilio -> socio -> credito -> letra
     $sql = "SELECT\n    creditos_solicitud.numero_socio AS 'persona',\n    CONCAT(\n    (CASE WHEN (socios_general.dependencia != creditos_solicitud.persona_asociada) THEN '(*)' ELSE '' END ),\n    socios_general.nombrecompleto, ' ',\n    socios_general.apellidopaterno, ' ',\n    socios_general.apellidomaterno\n    ) AS 'nombre',\n    \n    creditos_solicitud.numero_solicitud AS 'credito',\n    \n    getParcialidadPorFecha(ultimo_periodo_afectado, {$variacion}, '{$fechaFinal}', `primeras_letras`.`fecha_de_pago`, fecha_ministracion) AS 'letra',\n    `creditos_solicitud`.`pagos_autorizados`  AS 'pagos',\n     \n    creditos_solicitud.monto_parcialidad AS 'monto'\n    FROM\n    `creditos_solicitud` `creditos_solicitud`\n    INNER JOIN `creditos_periocidadpagos` `creditos_periocidadpagos`\n    ON `creditos_solicitud`.`periocidad_de_pago` =\n    `creditos_periocidadpagos`.`idcreditos_periocidadpagos`\n    INNER JOIN `primeras_letras` `primeras_letras`\n    ON `creditos_solicitud`.`numero_solicitud` = `primeras_letras`.\n    `docto_afectado`\n    INNER JOIN `socios_general` `socios_general`\n    ON `creditos_solicitud`.`numero_socio` = `socios_general`.\n    `codigo`\n    \n    WHERE `creditos_solicitud`.persona_asociada\t= {$empresa}\n    \n    ORDER BY ultimo_periodo_afectado DESC, fecha_ministracion,\n    socios_general.nombrecompleto\n    ";
     //setLog($sql);
     $dato = $xQl->getDataRecord($sql);
     $xT = new cTipos();
     foreach ($dato as $rw) {
         if (!isset($creditoON[$credito])) {
             $credito = $rw["credito"];
             $letra = $rw["letra"];
             $lmonto = $xT->cFloat($rw["monto"], 2);
             $cssN = "";
             $notas = "";
             $cls = $ixx == 2 ? " class='trOdd' " : "";
             $td = "<tr{$cls} id='tr-{$credito}'>";
             $td .= "<th>" . $rw["persona"] . "</th>";
             $td .= "<td>" . $rw["nombre"] . "</td>";
             $td .= "<td>" . $rw["credito"] . "</td>";
             $td .= "<td>" . $rw["letra"] . "</td>";
             $td .= "<th>" . $rw["pagos"] . "</th>";
             $td .= "<td>" . $lmonto . "</td>";
             $td .= "<td>" . $notas . "</td>";
             $td .= "<td class='toolbar-24' id=\"options-{$credito}\">";
             $td .= "</td>";
             $td .= "</tr>";
             $tr .= $td;
         }
     }
     //$xT			= new cHTabla();
     $tfoot = "<tr><th colspan='3'>TOTALES</td><th><input id=\"idconteo\" value=\"0\" type=\"number\"></th>";
     $tfoot .= "<td /><th><input id=\"idsuma\" value=\"0\" type=\"number\"></th><td colspan='2'><input type='text' id='idenletras' disabled='true' /></td></tr>";
     return "<table class='listado'>{$tr} {$tfoot}</table>";
 }
 $iReg = 0;
 $cT = new cTipos();
 //inicializa el LOG del proceso
 $aliasFil = getSucursal() . "-carga-batch-de-inversiones-" . fechasys();
 $xLog = new cFileLog($aliasFil, true);
 if ($gestor) {
     while (!feof($gestor)) {
         $bufer = fgets($gestor, 4096);
         //$bufer			= stream_get_line($gestor, "\r\n");
         if (!isset($bufer)) {
             $msg .= "{$iReg}\t\tERROR\tLa Linea({$iReg}) no se leyo({$bufer})\r\n";
         } else {
             $bufer = trim($bufer);
             $datos = explode(",", $bufer, 6);
             $socio = $cT->cInt($datos[0]);
             $importe = $cT->cFloat($datos[1]);
             $fechaApertura = $cT->cFecha($datos[2]);
             $plazo = $cT->cInt($datos[3]);
             $tasa = $cT->cFloat($datos[4]);
             $observaciones = $cT->cChar($datos[5]);
             $ClaveCuenta = false;
             //Iniciar el Socio
             //$msg .= "$iReg\t$socio\tERROR_SOCIO\t$socio -- $importe -- $fechaApertura -- $plazo -- $tasa -- $observaciones\r\n";
             $xCL = new cCajaLocal(99);
             if ($xCL->getExistenciaSocio($socio) <= 0) {
                 $msg .= "{$iReg}\t{$socio}\tERROR_SOCIO\tLa Linea({$iReg}) no se leyo por que no existe el socio({$bufer})\r\n";
             } else {
                 $xInv = new cCuentaInversionPlazoFijo(false, $socio, $plazo, $tasa, $fechaApertura);
                 //Agrega la Cuenta
                 $ClaveCuenta = $xInv->setNuevaCuenta(99, 2, $socio, $observaciones, DEFAULT_CREDITO, "", "", DEFAULT_GRUPO, $fechaApertura, CAPTACION_TIPO_PLAZO, 99, $plazo, $tasa);
                 if ($ClaveCuenta != false) {
 } else {
     $sqlD = "DELETE FROM sisbancs_temp_depositos ";
     my_query($sqlD);
 }
 while (!feof($gestor)) {
     $bufer = fgets($gestor, 4096);
     //$bufer			= stream_get_line($gestor, "\r\n");
     if (!isset($bufer)) {
         $msg .= "La Linea({$iReg}) no se leyo({$bufer})\r\n";
     } else {
         $datos = explode(",", trim($bufer), 3);
         $cuenta = trim($datos[0]);
         $nombre = strtoupper(trim($datos[1]));
         $estatus = $arrEstatus[substr($cuenta, 0, 6)];
         $TCuenta = isset($arrTCuenta[substr($cuenta, 0, 12)]) ? $arrTCuenta[substr($cuenta, 0, 12)] : 0;
         $monto = $cT->cFloat(trim($datos[2]));
         $modalidad = 1;
         $aDCuenta = explode("-", $cuenta);
         $socio = $cT->cInt($aDCuenta[5]);
         $sucursal = mifila("SELECT sucursal FROM socios_general WHERE codigo = {$socio} LIMIT 0,1 ", "sucursal");
         if ($sucursal != getSucursal()) {
             $sucursal = "otra";
         }
         //1-3-01-02
         if (substr($cuenta, 7, 2) == "02") {
             $modalidad = 3;
         }
         if ($monto > 0 and $socio != 0) {
             if ($TipoDeImportacion == "credito") {
                 $sqlD = "DELETE FROM sisbancs_temp_creditos WHERE cuenta_contable = '{$cuenta}' ";
                 my_query($sqlD);
}
$xHP->init();
$xFRM = new cHForm("frmmultas", "frmcobrodemultas.php?action=" . MQL_ADD);
if ($action == SYS_NINGUNO) {
    $xFRM->addPersonaBasico();
    $xFRM->ODate("idfechaactual", false, "TR.Fecha de cobro");
    $xFRM->addCobroBasico();
    $xFRM->OText("idconceptomulta", "", "TR.Concepto de Multa");
    $xFRM->OMoneda("idmontomulta", 0, "TR.Monto de Multa", true);
    $xFRM->addGuardar();
} else {
    $xT = new cTipos();
    //===========================================================================
    $idsocio = isset($_POST["idsocio"]) ? $xT->cInt($_POST["idsocio"]) : 0;
    $observaciones = isset($_POST["idconceptomulta"]) ? $xT->cChar($_POST["idconceptomulta"]) : "";
    $monto = isset($_POST["idmontomulta"]) ? $xT->cFloat($_POST["idmontomulta"]) : 0;
    $cheque = isset($_POST["cheque"]) ? $xT->cChar($_POST["cheque"]) : DEFAULT_CHEQUE;
    $comopago = isset($_POST["ctipo_pago"]) ? $xT->cChar($_POST["ctipo_pago"]) : DEFAULT_TIPO_PAGO;
    $foliofiscal = isset($_POST["foliofiscal"]) ? $xT->cChar($_POST["foliofiscal"]) : DEFAULT_RECIBO_FISCAL;
    if (setNoMenorQueCero($idsocio) <= 0) {
        //header("location: frmcobrodemultas.php?msg=FALTAN_DATOS");
        $xFRM->addAvisoRegistroError();
    } else {
        if (setNoMenorQueCero($monto) <= 0) {
            $xFRM->addAvisoRegistroError();
        } else {
            $iddocto = DEFAULT_CREDITO;
            $xRec = new cReciboDeOperacion(RECIBOS_TIPO_TERCEROS, false, false);
            $xRec->setGenerarBancos();
            $xRec->setGenerarPoliza();
            $xRec->setGenerarTesoreria();
 $aliasFil = getSucursal() . "-carga -batch-de-creditos-" . fechasys();
 $xLog = new cFileLog($aliasFil, true);
 if ($gestor) {
     while (!feof($gestor)) {
         $bufer = fgets($gestor, 4096);
         //$bufer			= stream_get_line($gestor, "\r\n");
         if (!isset($bufer)) {
             $msg .= "{$iReg}\t\tERROR\tLa Linea({$iReg}) no se leyo({$bufer})\r\n";
         } else {
             $bufer = trim($bufer);
             $datos = explode("|", $bufer, 18);
             $xF = new cFecha();
             $socio = $cT->cInt($datos[1]);
             $credito = false;
             //$cT->cInt($datos[1]);
             $monto = $cT->cFloat($datos[8]);
             $periocidad = $cT->cInt($arrPeriodos[trim($datos[7])]);
             $pagos = $cT->cInt($datos[6]);
             $ministracion = $xF->getFechaISO($datos[10]);
             $fechaSolicitado = $xF->getFechaISO($datos[5]);
             $descDestino = $cT->cChar($datos[9]);
             $tasa = $cT->cFloat($datos[15]);
             $tasa = $tasa / 100;
             $dias = $periocidad * $pagos;
             $aplicacion = $cT->cChar($datos[17]) == "S" ? 501 : 100;
             $vencimiento = $xF->setSumarDias($dias, $ministracion);
             //$cT->cFecha($datos[5]);
             $saldo = $cT->cFloat($datos[11]);
             $UltimaOperacion = fechasys();
             //$cT->cFecha($datos[9]);
             $ContratoCorriente = CTA_GLOBAL_CORRIENTE;
 //inicializa el LOG del proceso
 $aliasFil = getSucursal() . "-carga -batch-de-creditos-" . fechasys();
 $xLog = new cFileLog($aliasFil, true);
 if ($gestor) {
     while (!feof($gestor)) {
         $bufer = fgets($gestor, 4096);
         //$bufer			= stream_get_line($gestor, "\r\n");
         if (!isset($bufer)) {
             $msg .= "{$iReg}\t\tERROR\tLa Linea({$iReg}) no se leyo({$bufer})\r\n";
         } else {
             $bufer = trim($bufer);
             $datos = explode(",", $bufer, 12);
             $socio = $cT->cInt($datos[0]);
             $credito = $cT->cInt($datos[1]);
             $producto = $cT->cInt($datos[2]);
             $monto = $cT->cFloat($datos[3]);
             $ministracion = $cT->cFecha($datos[4]);
             $vencimiento = $cT->cFecha($datos[5]);
             $pagos = $cT->cInt($datos[6]);
             $periocidad = $cT->cInt($datos[7]);
             $saldo = $cT->cFloat($datos[8]);
             $UltimaOperacion = $cT->cFecha($datos[9]);
             $ContratoCorriente = $cT->cInt($datos[10]);
             if ($socio == 0) {
                 $msg .= "{$iReg}\t\tERROR\tLa Linea({$iReg}) no se leyo({$bufer})\r\n";
             } else {
                 $xCred = new cCredito();
                 //Crear Contrato corriente si el producto tiene ahorro
                 $DConv = $xCred->getDatosDeProducto($producto);
                 $tasaAhorro = $cT->cFloat($DConv["tasa_ahorro"]);
                 if ($ContratoCorriente == 0 and $tasaAhorro > 0) {
        saveError(210, $_SESSION["SN_b80bb7740288fda1f201890375a60c8f"], "Faltan Parametros({$params}) para el cobro, el Parametro {$ix} resulto " . $DPar[$ix]);
        header("location:../404.php?i=210");
        //provocar error 404
        exit;
    }
}
$xFRM = new cHForm("frmpagoprocesado");
$msg = "";
$capitalAfectado = false;
$interesAfectado = false;
///frmcaja/frmpagoprocesado.php?p=1000047|200004702|1|350.48|plc|efectivo|99|06-12-2013&procesar=automatico&periodoempresa=24
$socio = $xT->cInt($DPar[0]);
$solicitud = $xT->cInt($DPar[1]);
$parcialidad = $xT->cInt($DPar[2]);
$periocidad = $xT->cInt($DPar[3]);
$monto_a_operar = $xT->cFloat($DPar[4]);
$operacion = isset($DPar[5]) ? $DPar[5] : OPERACION_PAGO_COMPLETO;
$SRC = $_POST;
$abonar_al_final = 0;
$xCred = new cCredito($solicitud, $socio);
$xCred->init();
if ($procesado == SYS_AUTOMATICO) {
    $arrINTS = array(420);
    //Array de Intereses Devengados
    $SRC["ctipo_pago"] = $DPar[5];
    $operacion = $DPar[4];
    $monto_a_operar = $xT->cFloat($DPar[3]);
    $periocidad = isset($_REQUEST["periocidad"]) ? $_REQUEST["periocidad"] : DEFAULT_PERIOCIDAD_PAGO;
    $_SESSION[FECHA_OPERATIVA] = $xF->getFechaISO($DPar[7]);
    $totalAutomatico = 0;
    //6 = banco