function b_week($ignium) { if (!$ignium) { $mesa = date("m"); $annoa = date("Y"); //$fecha = date("Y-m-d", strtotime("$annoa-$mesa-01")); } else { $mesa = date("m", strtotime($ignium)) - 1; $annoa = date("Y", strtotime($ignium)); if ($mesa < 1) { $mesa = 12; $annoa = $annoa - 1; } } $xF = new cFecha(0, "{$annoa}-{$mesa}-01"); $fecha = $xF->get(); $dias_mes = $xF->getDiasDelMes(); $idm = $xF->mes(); $month = $xF->getMesNombre(); //Valores Iniciales $tdweek = ""; $colorweek = "#FFDFC6"; $nsemana = 1; $tcal = ""; for ($i = 1; $i <= $dias_mes; $i++) { $nowdate = "{$annoa}-{$idm}-{$i}"; $nday = date("l", strtotime($nowdate)); if ($nday == "Monday") { $dia = dia_semana($nowdate); $cnowdate = fecha_corta($nowdate); if ($tcal == "cal_2") { $tcal = "cal_1"; $tdweek = $tdweek . "<td class='{$tcal}' onclick='show_week(\"{$nowdate}\")'>SEMANA: {$nsemana} <br /> {$cnowdate}</td>"; } else { $tcal = "cal_2"; $tdweek = $tdweek . "<td class='{$tcal}' onclick='show_week(\"{$nowdate}\")'>SEMANA: {$nsemana} <br /> {$cnowdate}</td>"; } $nsemana++; } } return "<hr />\n\t<center>\n\t<table class='calendar_week'\n\tcellpadding='2' cellspacing='2' border='2'>\n\t\t<tr>\n\t\t\t<td class='{$tcal}'><img src='../images/common/query_back_down.png' onclick='back_week(\"{$nowdate}\");' /></td>\n\t\t\t{$tdweek}\n\t\t\t<td class='{$tcal}'><img src='../images/common/query_next_down.png' onclick='next_week(\"{$nowdate}\");' /></td>\n\t\t</tr>\n\t</table>\n\t</center>\n\t<hr />"; }
//===================================================================================================== $xP = new cHPage("Pruebas de Fechas", HP_FORM); $xP->setIncludes(); echo $xP->getHeader(); echo $xP->setBodyinit(); //Crear formularios $xHFrm = new cHForm("frmTest", "./test.php"); $xHTxt = new cHText(""); //$txt = $xHTxt->getDeMoneda("id", "Moneda de Prueba", 100); $miFecha = parametro("fecha", fechasys()); $xF = new cFecha(0, $miFecha); //$xHFrm->addHElem( $txt ); $xHFrm->addHElem($xF->show(true)); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Inicio se semana==" . $xF->getFechaDeInicioDeSemana() . "</p>"); $xHFrm->addHElem("<p class='aviso'>La {$miFecha}, Inicio se nombre semana==" . $xF->getDayName($xF->getFechaDeInicioDeSemana()) . "</p>"); $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>");
function setGenerarInteresSobreSDPM($recibo = false, $fecha_de_corte = false) { $sucursal = getSucursal(); $xQL = new MQL(); $xErC = new cErrorCodes(); $xLog = new cCoreLog(); $xDTb = new cSAFETabla(TCAPTACION_CUENTAS); //(`captacion_cuentas`.`sucursal` ='$sucursal') AND $txtlog = ""; $txtlog .= "==========================================================================================\r\n"; $txtlog .= "==========\tCALCULO DE INTERESES SOBRE SDPM DE CUENTAS A LA VISTA EN LA SUCURSAL {$sucursal}\r\n"; $txtlog .= "==========\tRECIBO DE CALCULO {$recibo}\r\n"; $txtlog .= "==========================================================================================\r\n"; $xF0 = new cFecha(0, $fecha_de_corte); $fecha_de_corte = $fecha_de_corte == false ? fechasys() : $fecha_de_corte; $dias_del_mes = $xF0->getDiasDelMes(); $fecha_de_inicio = $xF0->getDiaInicial(); $fecha_de_termino = $xF0->getDiaFinal(); $ejer = $xF0->anno(); $peri = $xF0->mes(); //(`captacion_cuentas`.`sucursal` ='$sucursal') AND /** * Reestructurar los Dias SDPM para los Creditos que no han tenido Movimiento */ //Generando el SDPM de los Credito sin movimiento o ultimo SDPM del mes $SQL_LST = $xDTb->getQueryInicial() . "\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t(`captacion_cuentas`.`estatus_cuenta` ='10') AND\n\t\t\t\t\t\t\t(`captacion_subproductos`.`metodo_de_abono_de_interes` ='AL_FIN_DE_MES')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_cuentas`.`saldo_cuenta`>= " . A_LA_VISTA_MONTO_MINIMO . " )\n\t\t\t\t\t\t"; $txtlog .= date("H:i:s") . "\t=========Cerrando las cuentas a su ultimo SDPM\r\n"; $txtlog .= date("H:i:s") . "\tLas Cuentas con Saldo Menor a " . A_LA_VISTA_MONTO_MINIMO . " no se Incluyen\r\n"; $rsUSDPM = $xQL->getDataRecord($SQL_LST); foreach ($rsUSDPM as $rwUSDPM) { $cuenta = $rwUSDPM["numero_cuenta"]; $socio = $rwUSDPM["numero_socio"]; $fecha_ultimo_mvto = $rwUSDPM["fecha_afectacion"]; $saldo_actual = $rwUSDPM["saldo_cuenta"]; $dias_de_sdpm = restarfechas($fecha_de_corte, $fecha_ultimo_mvto); $xCta = new cCuentaALaVista($cuenta); $xCta->init($rwUSDPM); if ($dias_de_sdpm > $dias_del_mes) { $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tLos dias del SDPM son de {$dias_de_sdpm} Mayores al del Mes {$dias_del_mes}, se ajustan\r\n"; $xFMes = new cFecha(0, $fecha_de_corte); $dias_de_sdpm = $xF0->setRestarFechas($fecha_de_corte, $xF0->getDiaInicial()); } $sdpm = $saldo_actual * $dias_de_sdpm; //Obtiene la Tasa $tasa = $xCta->getTasaAplicable(0, 0, $saldo_actual); //Inserta el SDPM $sqlUS = "INSERT INTO captacion_sdpm_historico\n\t\t\t\t\t\t(ejercicio, periodo, cuenta, fecha, dias, tasa, monto, recibo)\n\t \t\t\t\tVALUES( {$ejer}, {$peri}, {$cuenta}, '{$fecha_de_corte}', {$dias_de_sdpm}, {$tasa},{$sdpm}, {$recibo})"; my_query($sqlUS); //Actualiza la Cuenta $sqlUI = "UPDATE captacion_cuentas\n\t \t\t\t\t\t\tSET fecha_afectacion='{$fecha_de_corte}', ultimo_sdpm={$sdpm}\n\t \t\t\t\t\t\tWHERE numero_cuenta={$cuenta}"; my_query($sqlUI); $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tAgregando y Actualizando el SDPM por {$sdpm} del {$fecha_ultimo_mvto} al {$fecha_de_corte} por {$saldo_actual}\r\n"; } //considerar fecha de Apertura //agregar al Recibo //TODO: Actualizar esta linea $SQL_Captacion = "\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t`captacion_cuentas`.*,\n\t\t\t\t\t\t\t`captacion_subproductos`.*,\n\t\t\t\t\n\t\t\t\t\t`captacion_cuentas`.`numero_cuenta` AS `cuenta`,\n\t\t\t\t\t`captacion_cuentas`.`fecha_afectacion` AS `apertura`,\n\t\t\t\t\t`captacion_cuentas`.`inversion_fecha_vcto` AS `vencimiento`,\n\t\t\t\t\t`captacion_cuentas`.`tasa_otorgada` AS `tasa`,\n\t\t\t\t\t`captacion_cuentas`.`dias_invertidos` AS `dias`,\n\t\t\t\t\t`captacion_cuentas`.`observacion_cuenta` AS `observaciones`,\n\t\t\t\t\t`captacion_cuentas`.`saldo_cuenta` \t\t\t AS `saldo`,\n\t\t\t\t\t`captacion_subproductos`.`descripcion_subproductos` AS `subproducto`,\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSUM(`captacion_sdpm_historico`.`monto`) AS 'suma_sdpm'\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\tINNER JOIN `captacion_subproductos` `captacion_subproductos`\n\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_subproducto` = `captacion_subproductos`.\n\t\t\t\t\t\t\t\t`idcaptacion_subproductos`\n\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_sdpm_historico` `captacion_sdpm_historico`\n\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`numero_cuenta` = `captacion_sdpm_historico`.\n\t\t\t\t\t\t\t\t\t`cuenta`\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t(`captacion_cuentas`.`estatus_cuenta` ='10') AND\n\t\t\t\t\t\t\t(`captacion_subproductos`.`metodo_de_abono_de_interes` ='AL_FIN_DE_MES')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` >='{$fecha_de_inicio}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_sdpm_historico`.`fecha` <='{$fecha_de_termino}')\n\t\t\t\t\t\t\tAND\n\t\t\t\t\t\t\t(`captacion_cuentas`.`saldo_cuenta`>=" . A_LA_VISTA_MONTO_MINIMO . ")\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t`captacion_sdpm_historico`.`cuenta`\n\t\t\t\t\t\t\t"; setLog($SQL_Captacion); $rsCAP = $xQL->getDataRecord($SQL_Captacion); if (!$rsCAP) { if (MODO_DEBUG == true) { $txtlog .= $xQL->getMessages(); //date("H:i:s") . "\tERROR (" . mysql_errno() . ") AL EJECUTAR LA CONSULTA"; } } else { $txtlog .= "==========================================================================================\r\n"; //$xT1 = new cTipos(); foreach ($rsCAP as $rwC) { $cuenta = $rwC["numero_cuenta"]; $socio = $rwC["numero_socio"]; $apertura = $rwC["fecha_apertura"]; $sumaSDPM = $rwC["suma_sdpm"]; $dias_de_calc = $dias_del_mes; $promedio = $rwC["saldo_cuenta"]; $modificadorDeInteres = $rwC["algoritmo_modificador_del_interes"]; $modificadorDeTasa = $rwC["algoritmo_de_tasa_incremental"]; $interes = 0; $producto = $rwC["tipo_subproducto"]; //Si la Fecha de Apertura es Menor al Inicio de mes if (strtotime($apertura) > strtotime($fecha_de_inicio)) { $dias_de_calc = restarfechas($fecha_de_termino, $apertura); //Corrige el TIMESTAMP de Interes, la rotacion debe ser de al menos 24 Horas if ($dias_de_calc == 0) { $dias_de_calc = 1; } elseif ($dias_de_calc < 0) { $txtlog .= date("H:i:s") . "\t{$socio}\t{$cuenta}\tEROR_DIAS\t SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; $dias_de_calc = 1; $sumaSDPM = $promedio; } } $xCta = new cCuentaALaVista($cuenta); $xCta->init($rwC); $promedio = round($sumaSDPM / $dias_de_calc, 2); $tasa_nueva = $xCta->getTasaAplicable(0, 0, $promedio); $tasa = $tasa_nueva; //OK: Ejecutar Modificador de Tasa eval($modificadorDeTasa); //setLog("$modificadorDeTasa"); $interes = $sumaSDPM * $tasa / EACP_DIAS_INTERES; //OK: Ejecutar Consulta de Modificador de Interes eval($modificadorDeInteres); $interes = round($interes, 2); //$txtlog .= $modificadorDeInteres; if ($interes > 0) { $rsx = setNuevoMvto($socio, $cuenta, $recibo, $fecha_de_corte, $interes, 222, 1, "CALCULO_AUTOMATICO"); if ($rsx == false) { $txtlog .= "ERROR\t{$socio}\t{$cuenta}\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; } else { $txtlog .= "OK\t{$socio}\t{$cuenta}\tInteres por {$interes}, tasa {$tasa_nueva}, Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc} en Rec {$recibo}\r\n"; } $sqlUI = "UPDATE captacion_cuentas\n\t\t \t\t\t\t\t\tSET saldo_cuenta = (saldo_cuenta + {$interes})\n\t\t \t\t\t\t\t\tWHERE numero_cuenta={$cuenta} AND numero_socio={$socio}"; $x = my_query($sqlUI); } else { $txtlog .= "WARN\t{$socio}\t{$cuenta}\tNOINT\t({$interes} / {$tasa_nueva}) Promedio {$promedio}, SDPM {$sumaSDPM}, Dias {$dias_de_calc}\r\n"; } } } return $txtlog; }
function getFechaDeAviso($periocidad = false, $fecha = false, $periodoInit = false, $periodoEnd = false) { $xF = new cFecha(); $dias = explode(",", strtoupper($this->mDiasDeAviso)); $diasSem = $xF->getDiasDeSemanaInArray(); $periocidad = $periocidad == false ? $this->getPeriocidadPref() : $periocidad; $fecha = $fecha == false ? fechasys() : $fecha; $result = null; $items = 1; foreach ($diasSem as $numero => $nombre) { /*if(isset($dias[$nombre]) ){ unset($dias[$nombre]); $dias[$numero] }*/ } foreach ($dias as $id => $dia) { } foreach ($dias as $id => $dia) { //limpiar if ($periocidad != CREDITO_TIPO_PERIOCIDAD_SEMANAL) { foreach ($diasSem as $numero => $nombre) { if ($dia == $nombre) { unset($dias[$id]); } } if (setNoMenorQueCero($dia) > $xF->getDiasDelMes() or setNoMenorQueCero($dia) == 0) { unset($dias[$id]); } switch ($periocidad) { case CREDITO_TIPO_PERIOCIDAD_DECENAL: if ($id > 3) { unset($dias[$id]); } break; case CREDITO_TIPO_PERIOCIDAD_CATORCENAL: if ($id > 2) { unset($dias[$id]); } break; case CREDITO_TIPO_PERIOCIDAD_QUINCENAL: if ($id > 2) { unset($dias[$id]); } break; case CREDITO_TIPO_PERIOCIDAD_MENSUAL: if ($id > 1) { unset($dias[$id]); } break; } } else { //convertir dias foreach ($diasSem as $numero => $nombre) { if ($dia == $nombre) { $dias[$id] = $numero; } } if (setNoMenorQueCero($dia) > 7 or setNoMenorQueCero($dia) == 0) { unset($dias[$id]); } if ($id > 1) { unset($dias[$id]); } } } //$items = count($dias); //encontrar el periodo cero switch ($periocidad) { case CREDITO_TIPO_PERIOCIDAD_DECENAL: break; case CREDITO_TIPO_PERIOCIDAD_CATORCENAL: break; case CREDITO_TIPO_PERIOCIDAD_QUINCENAL: break; case CREDITO_TIPO_PERIOCIDAD_MENSUAL: $xF1 = new cFecha(0, $fecha); $result = $xF1->anno() . "-" . $xF1->mes() . "-" . $dias[0]; break; case CREDITO_TIPO_PERIOCIDAD_SEMANAL: //$fechaInicial = $xF->setFechaPorSemana(); $xF1 = new cFecha(0, $fecha); $buscar = 1; foreach ($dias as $id => $cnt) { $buscar = $cnt; } $semana = date("W", $xF1->getInt()); $result = $xF1->setFechaPorSemana($semana, $buscar); /* $first_day_of_week = date('m-d-Y', strtotime('Last Monday', time())); $last_day_of_week = date('m-d-Y', strtotime('Next Sunday', time())); */ break; } return $result; }