$xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Dias del Mes==" . $xF->getDiasDelMes() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, En Fecha Corta==" . $xF->getFechaCorta() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha Larga==" . $xF->getFechaLarga() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, En Fecha Mediana==" . $xF->getFechaMediana() . "</p>"); //$xHFrm->addHElem( ); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha Operativa Maxima==" . $xF->getFechaMaximaOperativa() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, El Mes Anterior==" . $xF->getFechaMesAnterior() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, dos meses atras==" . $xF->getFechaMesAnterior(false, 2) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha} - 30 Dias==" . $xF->setRestarDias(30) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha} + 30 Dias==" . $xF->setSumarDias(30) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha} + 2 meses==" . $xF->setSumarMeses(2) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha} - 2 meses==" . $xF->setRestarMeses(2) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Nombre del Dia==" . $xF->getDayName() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Dia Inicial del mes==" . $xF->getDiaInicial() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Obtener Dia Habil==" . $xF->getDiaHabil() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Dias desde el 31Dic2013==" . $xF->setRestarFechas($xF->get(), "2013-12-31") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Buscar Sabado(D6) para el dia de hoy==" . $xF->getDiaAbonoSemanal(6) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Buscar NOMBRE Sabado(D6) para el dia de hoy==" . $xF->getDayName($xF->getDiaAbonoSemanal(6)) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-02") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-11") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-18") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-20") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-24") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-29") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Fecha de Pago Decenal 1==" . $xF->getDiaAbonoDecenal(10, 20, 30, "2014-03-31") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Obtener dias Loborales en el mes==" . $xF->getDiasHabilesEnRango("2014-03-31", "2014-03-01") . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Obtener entero del mes==" . $xF->getInt(fechasys()) . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, DIAS CORRIENTES DE MES" . $xF->getDiasCorrientesDeMes() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, sumar 7 dias time stamp 84600==" . $xF->getFechaByInt($xF->getInt(fechasys()) + (7 + 1) * 84600) . "</p>"); $xHFrm->addHElem("<p class='aviso'>" . $xF->getMessages(OUT_HTML) . "</p>"); //$xHFrm->addHTML("<p>Esto es un parrafo de prueba</p>");
if (setNoMenorQueCero($xCred->getNumeroDePlanDePagos()) > 0) { $xPlan = $xCred->getOPlanDePagos(); // new cPlanDePagos($xCred->getNumeroDePlanDePagos()); $data = isset($DCal[$idcredito]) ? $DCal[$idcredito] : false; $xPlan->initParcsPendientes(0, $FechaFinal, $data); $NumeroPagosVencidos = $xPlan->getPagosAtrasados(); $SaldoVencido = $xPlan->getMontoAtrasado(); //Objeto Pago Actual $idpago_actual = $xPlan->getPeriodoProximoSegunFecha(); $idpago_actual = $idpago_actual == false ? $xCred->getPeriodoActual() + 1 : $idpago_actual; if ($idpago_actual == false) { $PagoActual = "V"; } else { $xLetra = $xPlan->getOLetra($idpago_actual); //calcular periodos vencidos $idletra_dias_vencidos = setNoMenorQueCero($xF->setRestarFechas($FechaFinal, $xLetra->getFechaDePago())); $idletra_periodos = floor($idletra_dias_vencidos / $xCred->getPeriocidadDePago()); $xLog->add("WARN\t{$idpersona}-{$idcredito}\t{$sucres}\tFecha Proxima de Pago: " . $xLetra->getFechaDePago() . " Dias Vencidos {$idletra_dias_vencidos}, Pagos vencidos {$idletra_periodos}\r\n", $xLog->DEVELOPER); if ($idletra_periodos > 0) { $PagoActual = sprintf("%02d", $idletra_periodos); } else { $PagoActual = "V"; } } $FechaDePrimerIncumplimiento = $xCR->getDate($xPlan->getFechaPrimerAtraso()); } else { $PagoActual = "V"; //TODO: 2014-12-10 } } }
function calcular($fecha_inicial = false, $PrimerPago = false, $SegundoPago = false, $TercerPago = false) { $xCred = new cCredito($this->mClaveDeCredito); $xCred->init(); $xF = new cFecha(); $msg = ""; $FORMA_DE_PAGO = $xCred->getFormaDePago(); $PAGOS_AUTORIZADOS = $xCred->getPagosAutorizados(); $PERIOCIDAD_DE_PAGO = $xCred->getPeriocidadDePago(); $MONTO_AUTORIZADO = $xCred->getMontoAutorizado(); $SALDO_ACTUAL = $xCred->getSaldoActual(); $INTERES_PAGADO = $xCred->getInteresNormalPagado(); $MORA_PAGADO = $xCred->getInteresMoratorioPagado(); $xCred->initPagosEfectuados(); $CAPITAL_PAGADO = setNoMenorQueCero($MONTO_AUTORIZADO - $SALDO_ACTUAL); $SALDO_DE_PLAN = $xCred->getMontoAutorizado(); $TASA_NORMAL = $xCred->getTasaDeInteres(); $TASA_MORA = $xCred->getTasaDeMora(); $TASA_IVA = $xCred->getTasaIVA(); $DIVISOR_DE_INTS = EACP_DIAS_INTERES; $FECHA_DE_PAGO = $xCred->getFechaPrimeraParc(); $FECHA_INICIAL = $xCred->getFechaDeMinistracion(); $opciondia_1 = $PrimerPago; $opciondia_2 = $SegundoPago; $opciondia_3 = $TercerPago; //sanitiza la fecha de pago if ($FECHA_DE_PAGO == false) { $FECHA_DE_PAGO = $xF->setSumarDias($PERIOCIDAD_DE_PAGO, $FECHA_INICIAL); } if (($PERIOCIDAD_DE_PAGO > CREDITO_TIPO_PERIOCIDAD_CATORCENAL or $PERIOCIDAD_DE_PAGO == CREDITO_TIPO_PERIOCIDAD_CATORCENAL) and ($opciondia_1 == false or $opciondia_2 == false or $opciondia_3 == false)) { if ($PERIOCIDAD_DE_PAGO == CREDITO_TIPO_PERIOCIDAD_QUINCENAL) { $opciondia_1 = $opciondia_1 == false ? PQ_DIA_PRIMERA_QUINCENA : $opciondia_1; $opciondia_2 = $opciondia_2 == false ? PQ_DIA_SEGUNDA_QUINCENA : $opciondia_2; } elseif ($PERIOCIDAD_DE_PAGO == CREDITO_TIPO_PERIOCIDAD_DECENAL) { $opciondia_1 = $opciondia_1 == false ? 10 : $opciondia_1; $opciondia_2 = $opciondia_2 == false ? 20 : $opciondia_2; $opciondia_3 = $opciondia_3 == false ? 30 : $opciondia_3; } else { $opciondia_1 = $opciondia_1 == false ? PM_DIA_DE_PAGO : $opciondia_1; } } //pagos decenales entre el mes $arrPagos = array(); //obtener los dias de pago en el mes por tipo de pago $dia_de_pago = $xCred->getFechaDeMinistracion(); for ($i = 1; $i <= $PAGOS_AUTORIZADOS; $i++) { $letra = $i; switch ($PERIOCIDAD_DE_PAGO) { case CREDITO_TIPO_PERIOCIDAD_DIARIO: $dia_de_pago = $xF->getDiaHabil($xF->setSumarDias(1, $dia_de_pago)); $arrPagos[$letra][SYS_FECHA] = $dia_de_pago; $msg .= "OK\t{$letra}\tDIARIO\tFecha de pago a {$dia_de_pago}\r\n"; break; case CREDITO_TIPO_PERIOCIDAD_SEMANAL: break; case CREDITO_TIPO_PERIOCIDAD_DECENAL: break; case CREDITO_TIPO_PERIOCIDAD_CATORCENAL: //dias naturales, cada dos semanas? break; case CREDITO_TIPO_PERIOCIDAD_QUINCENAL: $dia_de_pago = $xF->setSumarDias(CREDITO_TIPO_PERIOCIDAD_QUINCENAL, $dia_de_pago); $dia_de_pago = $xF->getDiaAbonoQuincenal($opciondia_1, $opciondia_2, $dia_de_pago); $arrPagos[$letra][SYS_FECHA] = $dia_de_pago; $msg .= "OK\t{$letra}\tQUINCENAL\tFecha de pago a {$dia_de_pago}, opcion {$opciondia_1}, {$opciondia_2}\r\n"; break; case CREDITO_TIPO_PERIOCIDAD_MENSUAL: $dia_de_pago = date("Y-m-", $xF->getInt($dia_de_pago)) . $opciondia_1; $dia_de_pago = $xF->setSumarMeses(1, $dia_de_pago); $dia_de_pago = $xF->getDiaHabil($dia_de_pago); $arrPagos[$letra][SYS_FECHA] = $dia_de_pago; $msg .= "OK\t{$letra}\tMENSUAL\tFecha de pago a {$dia_de_pago}, opcion {$opciondia_1}\r\n"; break; case CREDITO_TIPO_PERIOCIDAD_BIMESTRAL: break; case CREDITO_TIPO_PERIOCIDAD_TRIMESTRAL: break; } } //$FORMULA_INT = new cFormula("interes_normal"); //dias de pago //si es empresa, tomar la fecha de la empresa semanal, quincenal, mensual, decenal //Iniciar los Pagos Actuales //$this->initParcsPendientes(); $DatosDePagados = $xCred->getListadoDePagos(); /* interes capital impuestos */ switch ($FORMA_DE_PAGO) { case CREDITO_TIPO_PAGO_PERIODICO: //parcialidad interes + capital break; case CREDITO_TIPO_PAGO_FLAT_PARCIAL: for ($i = 1; $i <= $PAGOS_AUTORIZADOS; $i++) { $letra = $i; $letraAnterior = setNoMenorQueCero($letra - 1); $PagoAnterior = isset($DatosDePagados[$letra]) ? $DatosDePagados[$letra] : array(); $capital_pagado = isset($DPago[SYS_CAPITAL]) ? $DPago[SYS_CAPITAL] : 0; $SALDO_DE_PLAN = $SALDO_DE_PLAN - $capital_pagado; $interes_normal = $MONTO_AUTORIZADO * $PERIOCIDAD_DE_PAGO * $TASA_NORMAL / $DIVISOR_DE_INTS; $capital = $MONTO_AUTORIZADO / $PAGOS_AUTORIZADOS; $capital = setNoMenorQueCero($capital - $capital_pagado); $interes_pagado = isset($DPago[SYS_INTERES_NORMAL]) ? $DPago[SYS_INTERES_NORMAL] : 0; $interes_normal = setNoMenorQueCero($interes_normal - $interes_pagado); $arrPagos[$letra][SYS_INTERES_NORMAL] = $interes_normal; if ($letra == $PAGOS_AUTORIZADOS) { if ($SALDO_DE_PLAN > 0) { $arrPagos[$letra][SYS_CAPITAL] = $SALDO_DE_PLAN; $msg .= "WARN\t{$letra}\tCapital a ultimo pago {$SALDO_DE_PLAN} \r\n"; } } //determinar proxima fecha de pago $msg .= "OK\t{$letra}\tInteres Normal en {$interes_normal}, Pagado {$interes_pagado} \r\n"; } break; case CREDITO_TIPO_PAGO_INTERES_PERIODICO: for ($i = 1; $i <= $PAGOS_AUTORIZADOS; $i++) { $letra = $i; $letraAnterior = setNoMenorQueCero($letra - 1); $DAnterior = isset($DatosDePagados[$letraAnterior]) ? $DatosDePagados[$letraAnterior] : array(); $capital_pagado = isset($DAnterior[SYS_CAPITAL]) ? $DAnterior[SYS_CAPITAL] : 0; $SALDO_DE_PLAN = $SALDO_DE_PLAN - $capital_pagado; $DPago = isset($DatosDePagados[$letra]) ? $DatosDePagados[$letra] : array(); $interes_pagado = isset($DPago[SYS_INTERES_NORMAL]) ? $DPago[SYS_INTERES_NORMAL] : 0; //datos del pago anterior $DLetraAnterior = isset($arrPagos[$letraAnterior]) ? $arrPagos[$letraAnterior] : array(); $DLetra = isset($arrPagos[$letra]) ? $arrPagos[$letra] : array(); $FechaAnterior = isset($DLetraAnterior[SYS_FECHA]) ? $DLetraAnterior[SYS_FECHA] : $xCred->getFechaDeMinistracion(); $FechaActual = isset($DLetra[SYS_FECHA]) ? $DLetra[SYS_FECHA] : false; $DIAS_TRANSCURRIDOS = $xF->setRestarFechas($FechaActual, $FechaAnterior); //INTERES NORMAL $interes_normal = $SALDO_DE_PLAN * $DIAS_TRANSCURRIDOS * $TASA_NORMAL / $DIVISOR_DE_INTS; $interes_normal = setNoMenorQueCero($interes_normal - $interes_pagado); $arrPagos[$letra][SYS_INTERES_NORMAL] = $interes_normal; if ($capital_pagado > 0) { $msg .= "WARN\t{$letra}\tCapital en pago {$letraAnterior} de {$capital_pagado} \r\n"; } if ($letra == $PAGOS_AUTORIZADOS) { if ($SALDO_DE_PLAN > 0) { $arrPagos[$letra][SYS_CAPITAL] = $SALDO_DE_PLAN; $msg .= "WARN\t{$letra}\tCapital a ultimo pago {$SALDO_DE_PLAN} \r\n"; } } $msg .= "OK\t{$letra}\tInteres Normal en {$interes_normal}, Pagado {$interes_pagado}, Dias {$DIAS_TRANSCURRIDOS},Fecha : Actual {$FechaActual} Anterior {$FechaAnterior}\r\n"; } break; case CREDITO_TIPO_PAGO_INTERES_COMERCIAL: for ($i = 1; $i <= $PAGOS_AUTORIZADOS; $i++) { $letra = $i; $letraAnterior = setNoMenorQueCero($letra - 1); $DAnterior = isset($DatosDePagados[$letraAnterior]) ? $DatosDePagados[$letraAnterior] : array(); $capital_pagado = isset($DAnterior[SYS_CAPITAL]) ? $DAnterior[SYS_CAPITAL] : 0; $SALDO_DE_PLAN = $SALDO_DE_PLAN - $capital_pagado; $DPago = isset($DatosDePagados[$letra]) ? $DatosDePagados[$letra] : array(); $interes_pagado = isset($DPago[SYS_INTERES_NORMAL]) ? $DPago[SYS_INTERES_NORMAL] : 0; //INTERES NORMAL $interes_normal = $SALDO_DE_PLAN * $PERIOCIDAD_DE_PAGO * $TASA_NORMAL / $DIVISOR_DE_INTS; $interes_normal = setNoMenorQueCero($interes_normal - $interes_pagado); $arrPagos[$letra][SYS_INTERES_NORMAL] = $interes_normal; if ($capital_pagado > 0) { $msg .= "WARN\t{$letra}\tCapital en pago {$letraAnterior} de {$capital_pagado} \r\n"; } if ($letra == $PAGOS_AUTORIZADOS) { if ($SALDO_DE_PLAN > 0) { $arrPagos[$letra][SYS_CAPITAL] = $SALDO_DE_PLAN; $msg .= "WARN\t{$letra}\tCapital a ultimo pago {$SALDO_DE_PLAN} \r\n"; } } $msg .= "OK\t{$letra}\tInteres Normal en {$interes_normal}, Pagado {$interes_pagado} \r\n"; } break; } $NumeroPlan = $this->mNumeroDePlan; //$this->setEliminar(); //eliminar plan de pagos foreach ($arrPagos as $periodo) { } $this->mMessages .= $msg; return $msg; }
$xSoc = new cSocio($persona); $arrDatos = array("periocidad_de_pago" => $periocidad, "tipo_de_producto" => $tipoconvenio, "numero_de_pagos" => $numeropagos, "contrato_corriente_relacionado" => $contrato_corriente, "fecha_de_ministracion" => $ministrado, "fecha_de_vencimiento" => $vencido, "monto_solicitado" => $monto_solicitado); $sucess = true; if ($xSoc->isOperable() == true) { $sucess = $xSoc->setPrevalidarCredito($arrDatos); if ($xSoc->getUUID() != $_SESSION[SYS_UUID]) { $msg .= "ERROR\tEl credito Validado no es el mismo que intenta guardar(" . $xSoc->getUUID() . "|" . $_SESSION[SYS_UUID] . ")\r\n"; $sucess = false; } } else { $sucess = false; } if ($sucess == true) { $grupo_asociado = $xSoc->getClaveDeGrupo(); if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) { $dias_solicitados = $xFecha->setRestarFechas($fecha_vencimiento, $fecha_ministracion); } elseif ($periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) { $dias_solicitados = $xFecha->setRestarFechas($fecha_vencimiento, $fecha_ministracion); $numeropagos = $dias_solicitados - $xFecha->getDiasHabilesEnRango($fecha_vencimiento, $fecha_ministracion); } else { $dias_solicitados = $numeropagos * $periocidad; $fecha_vencimiento = $xFecha->setSumarDias($dias_solicitados, $fecha_ministracion); } $xConv = new cProductoDeCredito($tipoconvenio); $xConv->init(); if (USE_OFICIAL_BY_PRODUCTO == true) { $oficial_de_seguimiento = $xConv->getOficialDeSeguimiento(); } if ($esrenovado == true) { $TipoDeAutorizacion = CREDITO_AUTORIZACION_RENOVADO; $msg .= "WARN\tCredito marcado como Renovado \r\n";
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; }
/** * Genera un reinversion * * @param date $fecha Fecha de Cierre se refiere a la fecha que que se efectua la Reinversion * @param boolean $cerrar Cerrar, indica si se cierra la inversion. * @param float $tasa * @param int $dias * @return integer Numero de Recibo */ function setReinversion($fecha = false, $cerrar = false, $tasa = false, $dias = false, $InversionParcial = false, $invertido = 0) { $recibo = false; $xF = new cFecha(); //en Monto de la reinversion sera despues de los depositos (Saldo Actual) //si cerrar = false, no efectuar ninguno movimiento if ($cerrar == true) { $this->mPeriodoCuenta = setNoMenorQueCero($this->mPeriodoCuenta) + 1; $this->mDiasInvertidos = setNoMenorQueCero($dias) > 0 ? $dias : $this->mDiasInvertidos; //2012-01-09: correccion de dias menores a cero $this->mDiasInvertidos = $this->mDiasInvertidos < INVERSION_DIAS_MINIMOS ? INVERSION_DIAS_MINIMOS : $this->mDiasInvertidos; if ($tasa != false) { if ($tasa > $this->mTasaInteres) { $this->mTasaInteres = $tasa; $this->mMessages .= "WARN\tTASA\tSe respeta una Tasa Especial de {$tasa} sobre " . $this->mTasaInteres . " que tenia Anteriormente \r\n"; } } $grupo = $this->mGrupoAsociado; $observaciones = "REINVERSION AUTOMATICA # " . $this->mPeriodoCuenta; $recibo_fiscal = "NA"; $tipo_de_pago = TESORERIA_COBRO_NINGUNO; $cheque = "NA"; $tipo_de_recibo = 6; //OK: Verificar Monto de la Operacion $monto = ($InversionParcial == true and $invertido > 0) ? $invertido : $this->mNuevoSaldo; //verificar Nuevamente la Tasa $tasa = $this->mTasaInteres <= 0 ? $this->getTasaAplicable($this->mDiasInvertidos, 0, $monto) : $this->mTasaInteres; //algoritmo de tasa incremental eval($this->mModificadorTasa); $this->mTasaInteres = $tasa; if (setNoMenorQueCero($this->mSocioTitular) <= DEFAULT_SOCIO) { $this->initCuentaByCodigo(); } //2014-09-09 .- validar si el recibo se inicia y tiene fecha de hoy if ($this->getOReciboInversion() == null) { //El recibo no existe $this->mMessages .= "WARN\tNo existe el Recibo de Inversion\r\n"; } else { $dia_de_inversion = $this->getOReciboInversion()->getFechaDeRecibo(); $recibo_anterior = $this->getOReciboInversion()->getCodigoDeRecibo(); if ($xF->getInt($dia_de_inversion) == $xF->getInt($fecha)) { $this->mMessages .= "WARN\tLa fecha de reinversion[{$fecha}] es igual al recibo anterior[{$recibo_anterior} - " . $dia_de_inversion . "] se Eliminara\r\n"; $this->getOReciboInversion()->setRevertir(true); $this->mMessages .= $this->getOReciboInversion()->getMessages(); } } if ($fecha == false) { if (isset($this->mFechaOperacion) and $this->mFechaOperacion != false) { $fecha = $this->mFechaOperacion; } else { $fecha = fechasys(); } } //Corrige el Dia Inhabil //$this->mFechaVencimiento; //corrige la fecha de Vencimiento, si es menor a la actual if (strtotime($fecha) >= strtotime($this->mFechaVencimiento)) { $this->mMessages .= "WARN\tLa fecha de reinversion[{$fecha}] es mayor a la de vencimiento[" . $this->mFechaVencimiento . "]\r\n"; if ($this->mDiasInvertidos > 0) { $this->mFechaVencimiento = $xF->setSumarDias($this->mDiasInvertidos, $fecha); } } $this->mFechaVencimiento = $xF->getDiaHabil($this->mFechaVencimiento); $diasCalculados = $xF->setRestarFechas($this->mFechaVencimiento, $fecha); if ($diasCalculados > $this->mDiasInvertidos) { $this->mDiasInvertidos = $diasCalculados; $this->mMessages .= "WARN\tSe Actualizan los Dias de Inversion a {$diasCalculados}\r\n"; } $socio = $this->mSocioTitular; //Inicializar el Recibo $CRecibo = new cReciboDeOperacion($tipo_de_recibo, true); //Agregar recibo si no hay if (setNoMenorQueCero($recibo) <= 0) { $recibo = $CRecibo->setNuevoRecibo($socio, $this->mNumeroCuenta, $this->mFechaOperacion, $this->mPeriodoCuenta, $tipo_de_recibo, $observaciones, $cheque, $tipo_de_pago, $recibo_fiscal, $grupo); //Checar si se agrego el recibo if (setNoMenorQueCero($recibo) > 0) { $this->mMessages .= "SUCESS\tSe Agrego Exitosamente el Recibo {$recibo} de la Cuenta " . $this->mNumeroCuenta . " \r\n"; $this->mReciboDeReinversion = $recibo; $this->mSucess = true; } else { $this->mMessages .= "ERROR\tSe Fallo al Agregar el Recibo {$recibo} de la Cuenta " . $this->mNumeroCuenta . " \r\n"; $this->mSucess = false; } } else { } $this->mReciboDeReinversion = $recibo; //Calcular el Interes $interes = $monto * $this->mTasaInteres * $this->mDiasInvertidos / EACP_DIAS_INTERES; //OK: Ejecutar modificador de interes eval($this->mModificadorDeInteres); //si hay recibo, agregar if (setNoMenorQueCero($recibo) > 0) { //Agregar el Movimiento de Reinversion $CRecibo->setNuevoMvto($fecha, $monto, 223, $this->mPeriodoCuenta, $observaciones, 1, TM_ABONO, $socio, $this->mNumeroCuenta); $this->mMessages .= "OK\tEVENT\tAgregando la Reinversion por un Monto de {$monto} de la Cuenta " . $this->mNumeroCuenta . " con fecha {$fecha} \r\n"; //Agregar el Movimiento de Interes $CRecibo->setNuevoMvto($this->mFechaVencimiento, $interes, 500, $this->mPeriodoCuenta, $observaciones, 1, TM_ABONO, $socio, $this->mNumeroCuenta); $CRecibo->setFinalizarRecibo(true); $this->mMessages .= $CRecibo->getMessages("txt"); $this->mSucess = true; //Actualizar la Cuenta if ($InversionParcial == false and $invertido == 0) { $this->setUpdateInversion(); } } else { $this->mMessages .= "ERROR\tNo Existe Recibo con el cual trabajar({$recibo}) \r\n"; } $this->mMessages .= $CRecibo->getMessages(); return $recibo; } }
for ($simletras1 = 1; $simletras1 <= $PAGOS_AUTORIZADOS; $simletras1++) { $fecha_de_referencia = $simletras1 == 1 ? $fecha_primer_abono : $fecha_de_pago; $saldo_final = $saldo_inicial - $parcialidad_capital; $xPlanGen->setTipoDeCreditoEnSistema($xCred->getTipoEnSistema()); $xPlanGen->setPagosAutorizados($PAGOS_AUTORIZADOS); $xPlanGen->setDiasDeAbonoFijo($dia_1_ab, $dia_2_ab, $dia_3_ab); $xPlanGen->setTipoDePlanDePago($tipo_de_plan); $xPlanGen->setPeriocidadDePago($PERIOCIDAD_DE_PAGO); $xPlanGen->setSaldoInicial($saldo_inicial); $xPlanGen->setSaldoFinal($saldo_final); $fecha_de_pago = $xPlanGen->getFechaDePago($fecha_de_referencia, $simletras1); } /*if( $PERIOCIDAD_DE_PAGO == CREDITO_TIPO_PERIOCIDAD_DIARIO){ $fecha_de_pago = $xCred->getFechaDeVencimiento(); }*/ $dias_estimados = $xF->setRestarFechas($fecha_de_pago, $fecha_ministracion); $dias_desviados = $dias_estimados - $PAGOS_AUTORIZADOS * $PERIOCIDAD_DE_PAGO; $desviacion_total = 1 + $dias_desviados / ($PAGOS_AUTORIZADOS * $PERIOCIDAD_DE_PAGO) / 10; $desviacion = $tipo_de_plan != 99 ? 0.013 - 0.00013 * $PAGOS_AUTORIZADOS : 0; $estimado_dias_promedio = $dias_estimados / $PAGOS_AUTORIZADOS * (1 + $desviacion); if ($tipo_de_calculo == INTERES_POR_SALDO_HISTORICO) { $estimado_periodico_interes = $monto_autorizado * $tasa_interes * $dias_estimados / EACP_DIAS_INTERES * (1 + $tasa_iva); $parcialidad_presumida = ($monto_autorizado + $total_ahorro + $monto_extra + $estimado_periodico_interes) / $PAGOS_AUTORIZADOS; } else { //Recompocision para el tipo de Pago sobre Saldos Insolutos $estimado_periodico_interes = $tasa_interes / EACP_DIAS_INTERES * $estimado_dias_promedio * (1 + $tasa_iva); $parcialidad_presumida = $monto_autorizado * $estimado_periodico_interes / (1 - pow(1 + $estimado_periodico_interes, $PAGOS_AUTORIZADOS * -1)) + ($total_ahorro + $monto_extra) / $PAGOS_AUTORIZADOS; } $parcialidad_presumida = $parcialidad_presumida * $desviacion_total; $parcialidad_presumida = PLAN_DE_PAGOS_SIN_REDONDEO == true ? $parcialidad_presumida : round($parcialidad_presumida, 2); //====================================== modificar la parcialidad
function restarfechas($el_restado, $por_restar) { $xF = new cFecha(); return $xF->setRestarFechas($el_restado, $por_restar); }
function setPrevalidarCredito($arrDatos, $retornarMonto = false) { //$periocidad, $convenio, $contrato $xF = new cFecha(0); $sucess = true; $xT = new cTipos(); $socio = $this->mCodigo; //Datos a Manejar $monto_maximo = 0; $solicitud = isset($arrDatos["numero_de_solicitud"]) ? $arrDatos["numero_de_solicitud"] : false; $periocidad = isset($arrDatos["periocidad_de_pago"]) ? $arrDatos["periocidad_de_pago"] : 1; $convenio = isset($arrDatos["tipo_de_producto"]) ? $arrDatos["tipo_de_producto"] : false; $pagos = isset($arrDatos["numero_de_pagos"]) ? $arrDatos["numero_de_pagos"] : 0; $fecha_de_venc = isset($arrDatos["fecha_de_vencimiento"]) ? $arrDatos["fecha_de_vencimiento"] : $xF->get(); $fecha_de_min = isset($arrDatos["fecha_de_ministracion"]) ? $arrDatos["fecha_de_ministracion"] : $xF->get(); $contrato_corr = isset($arrDatos["contrato_corriente_relacionado"]) ? $arrDatos["contrato_corriente_relacionado"] : DEFAULT_CUENTA_CORRIENTE; $monto = isset($arrDatos["monto_solicitado"]) ? $arrDatos["monto_solicitado"] : 0; // $dias = ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO or $periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) ? $xF->setRestarFechas($fecha_de_venc, $fecha_de_min) : $periocidad * $pagos; //enviar false if ($convenio == false) { $sucess = false; $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl tipo de Convenio no es Valido\r\n"; } else { $xConv = new cProductoDeCredito($convenio); //si es nomina y no tiene empresa. mostrar false if ($xConv->getEsProductoDeNomina() == true) { $this->mMessages .= "WARN\t{$socio}\t{$solicitud}\tEl Producto e de Nomina\r\n"; if ($this->getClaveDeEmpresa() == FALLBACK_CLAVE_EMPRESA) { $sucess = false; $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl Producto es de Nomina y No hay EMPRESA\r\n"; } } $DConv = $xConv->getDatosInArray(); $dias_maximo = $DConv["dias_maximo"]; $tasa_ahorro = $DConv["tasa_ahorro"]; $pagos_maximo = $DConv["pagos_maximo"]; $validacion_php = $DConv["php_monto_maximo"]; //cargar datos economicos del socio $ingreso_mensual = $this->getIngresosMensuales(); $DTotCreds = $this->getTotalColocacionActual(); $DTotCredsByConvenio = $this->getTotalColocacionActual($convenio); $DTotCapt = $this->getTotalCaptacionActual(); //Datos de los Creditos segun referencias $monto_de_aportaciones = $this->getFondoPatrimonial(); $saldos_de_creditos = $xT->cFloat($DTotCreds["saldo"]); $saldo_por_producto = $xT->cFloat($DTotCredsByConvenio["saldo"]); $monto_de_planeacion = get_monto_planeacion_credito($socio); //TODO: modificar $monto_linea_credito = $this->getMontoLineaDeCredito(); $saldo_de_captacion = $xT->cFloat($DTotCapt["saldo"]); //Datos de los Creditos segun Productos $producto_monto_maximo = $DConv["maximo_otorgable"]; //Valorar Dias Maximo del Credito if ($dias > $dias_maximo) { $sucess = false; $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Dias del Credito[{$dias}] se exceden a lo permitido[{$dias_maximo}]\r\n"; } else { if ($dias < EACP_DIAS_MINIMO_CREDITO) { $sucess = false; $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Dias del Credito[{$dias}] son Menores al Minimo Permitido [" . EACP_DIAS_MINIMO_CREDITO . "] por la Institucion\r\n"; } else { $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tDias de Pago dentro del Rango Permitido:[{$dias}]\r\n"; } } //Valorar Pagos Maximo del Credito if ($pagos > $pagos_maximo) { $sucess = false; $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLos Numero de Pagos[{$pagos}] Execeden a lo Permitido[{$pagos_maximo}]\r\n"; } else { $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tNumero de Pagos dentro del Rango Permitido[{$pagos}]\r\n"; } //tasa de ahorro if ($tasa_ahorro > 0) { $this->mMessages .= "WARN\t{$socio}\t{$solicitud}\tEl Ahorro para este Convenio es Obligatorio\r\n"; //Valorar Contrato de Captacion if ($contrato_corr == DEFAULT_CUENTA_CORRIENTE or strlen($contrato_corr) < DIGITOS_DE_CLAVE_DE_SOCIO) { $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tDebe Capturar un Numero de Contrato de Cuenta Corriente\tpara que los Pagos de Credito se Acumulen\r\n"; $sucess = false; } else { $xCta = new cCuentaDeCaptacion($contrato_corr); $existe = $this->existeCuenta($contrato_corr, CAPTACION_TIPO_VISTA); if ($existe == false) { // $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tLa Cuenta {$contrato_corr} No existe, o no es del Tipo requerido\r\n"; $sucess = false; } else { // $this->mMessages .= "OK\t{$socio}\t{$solicitud}\tLa Cuenta {$contrato_corr} es valida para Utilizar\r\n"; } } //end: contrato } // end: tasa ahorro // eval($validacion_php); if ($monto > $monto_maximo) { $this->mMessages .= "ERROR\t{$socio}\t{$solicitud}\tEl Monto Solicitado {$monto} es mayor al Maximo Permitido {$monto_maximo}\r\n"; $sucess = false; } } $this->mUUID = md5($socio . $convenio . $monto . $pagos . ROTTER_KEY . date("Ymd")); return $retornarMonto == false ? $sucess : $monto_maximo; //obtener mensajes }
function setGenerarMvtoFinDeMes($fecha_inicial, $fecha_final, $NumeroDeCredito = false, $ForzarEnPeriodo = false) { /** * @var $ForzarPeriodo * se refiere a que debe actualizar el saldo conciliado segun los pagos acumulados a la fecha * */ $msg = "==\t\tGENERAR MOVIMIENTOS DEL FIN DE MES\t\t==\r\n"; $arrPagosF = array(); $arrPagosM = array(); $xQl = new MQL(); //$wByCredito = " AND ( (`creditos_solicitud`.`fecha_ministracion` >= '$fecha_inicial' ) AND (`creditos_solicitud`.`fecha_ministracion` <= '$fecha_final' ) ) "; $wByCredito = ""; $wByCredito = $NumeroDeCredito != false ? " AND (`creditos_solicitud`.`numero_solicitud` = {$NumeroDeCredito}) " : $wByCredito; $wByMvto = " AND fecha_operacion>='{$fecha_inicial}' AND fecha_operacion<='{$fecha_final}' "; $wByMvto = $NumeroDeCredito != false ? " AND docto_afectado = {$NumeroDeCredito} " : $wByMvto; //============================================================================== $fechaRec = fechasys(); $observaciones = "GENERADO_EN_LA_UTILERIA_888"; //============================================================================== $sqlDM = "DELETE FROM operaciones_mvtos WHERE tipo_operacion=999 {$wByMvto} "; // Agregado el 2012-01-17- Ya lo habia corregido??? my_query($sqlDM); //============================================================================== if ($ForzarEnPeriodo == true) { $sqlP = "SELECT\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado` AS `socio`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado` AS `documento`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion` AS `operacion`,\n\t\t\t\t\t\t\t\tMAX(`operaciones_mvtos`.`fecha_operacion`) AS `fecha`,\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\tWHERE\n\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`tipo_operacion` = 120) \n\t\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t\t(`operaciones_mvtos`.`fecha_operacion` <='{$fecha_final}')\n\t\t\t\t\t\t\t\t{$wByMvto}\n\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`docto_afectado`,\n\t\t\t\t\t\t\t\t`operaciones_mvtos`.`tipo_operacion` "; $rsP = $xQl->getDataRecord($sqlP); $msg .= "============ ULTIMOS MVTOS HASTA LA FECHA {$fecha_final} \r\n"; foreach ($rsP as $rwP) { $mSocio = $rwP["socio"]; $mCredito = $rwP["documento"]; $mFecha = $rwP["fecha"]; $mMonto = $rwP["monto"]; $arrPagosF[$mCredito] = $mFecha; $arrPagosM[$mCredito] = $mMonto; $msg .= "{$mSocio}\t{$mCredito}\tFecha {$mFecha}\t Monto: {$mMonto}\r\n"; } } //============================================================================== $CRecibo = new cReciboDeOperacion(10, false); $sql = "SELECT SQL_CACHE\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\t\t\t\t\t`creditos_solicitud`.`tasa_ahorro` AS `tasa_de_ahorro`\n\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\tWHERE\n\t\t\t\t\t\t\t\t(`creditos_solicitud`.`estatus_actual` !=50)\n\t\t\t\t\t\t\t\t{$wByCredito}\n\t\t\t\t\t\t\t\t "; $rsMx = $xQl->getDataRecord($sql); // mysql_query($sql, cnnGeneral() ); //$msg .= $sql ."\r\n" . $sqlDM . "\r\n"; $msg .= "============ GENERANDO MOVIMIENTOS 999: Saldos al Fin del mes \r\n"; $xF = new cFecha(); $recibo = $CRecibo->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, $fechaRec, 1, 10, $observaciones, DEFAULT_CHEQUE, "ninguno", DEFAULT_RECIBO_FISCAL, DEFAULT_GRUPO); $CRecibo->setNumeroDeRecibo($recibo); foreach ($rsMx as $rw) { //corregir cuando yo me acuerde //Corregi accion de forzado... que mas? $solicitud = $rw["numero_solicitud"]; $socio = $rw["numero_socio"]; $fechaMinistracion = $rw["fecha_ministracion"]; $montoMinistrado = $rw["monto_autorizado"]; //Datos a conciliar $fechaUltimoMvto = $rw["fecha_ultimo_mvto"]; $saldoActual = $rw["saldo_actual"]; $FechaInicial = $fechaMinistracion; if ($ForzarEnPeriodo == true) { $pagos = isset($arrPagosM[$solicitud]) ? $arrPagosM[$solicitud] : 0; $saldo = $montoMinistrado - $pagos; $fechaUltimoMvto = isset($arrPagosF[$solicitud]) ? $arrPagosF[$solicitud] : $fechaUltimoMvto; //notas_auditoria= '', fecha_revision='2011-10-23', //si la fecha de ministracion es mayor a la final, invalidad fecha y saldo a cero $saldo_conciliado = $fechaMinistracion > $fecha_final ? 0 : $saldo; $fecha_conciliada = $fechaMinistracion > $fecha_final ? $fechaMinistracion : $fechaUltimoMvto; $sqlUC = "UPDATE creditos_solicitud SET saldo_conciliado={$saldo_conciliado}, fecha_conciliada='{$fecha_conciliada}'\n\t\t\t\t\t\t\t\t\t \tWHERE numero_solicitud={$solicitud} "; $msg .= "{$socio}\t{$solicitud}\tActualizar Saldo a {$saldo_conciliado}, Fecha a {$fecha_conciliada}, Ministrado: {$montoMinistrado}, Monto Pagado: {$pagos}\r\n"; my_query($sqlUC); } $FechaFinal = $saldoActual <= TOLERANCIA_SALDOS ? $fechaUltimoMvto : fechasys(); $dias = $xF->setRestarFechas($FechaFinal, $FechaInicial); $monto = 1; //$saldoActual; //$msg .= "Dias $dias \r\n"; for ($i = 0; $i <= $dias; $i++) { $fecha = $xF->setSumarDias($i, $FechaInicial); $fin_de_mes = $xF->getDiaFinal($fecha); if ($fecha == $fin_de_mes) { //guardar solo los datos del fin de mes if ($fecha >= $fecha_inicial and $fecha <= $fecha_final) { $observaciones = "Cierre a {$fecha}, Fin de mes {$fin_de_mes}"; $operacion = $CRecibo->setNuevoMvto($fecha, $monto, OPERACION_CLAVE_FIN_DE_MES, 1, $observaciones, 0, TM_CARGO, $socio, $solicitud); $msg .= "{$i}\t{$socio}\t{$solicitud}\t{$fecha}\t{$fin_de_mes}\t{$saldoActual}\t{$operacion}\r\n"; } else { $msg .= "{$i}\t{$socio}\t{$solicitud}\t{$fecha}\t{$fin_de_mes}\t{$saldoActual}\tNO_REG\r\n"; } } } } $CRecibo->setFinalizarRecibo(); return $msg; }