function jsa_getDatosDeCredito($solicitud) { $xCred = new cCredito($solicitud); $xCred->initCredito(); $xF = new cFecha(); $xT = new cTipos(); $dCreds = $xCred->getDatosDeCredito(); $periocidad = $xCred->getPeriocidadDePago(); $FMinistracion = $xCred->getFechaDeMinistracion(); $contrato_corriente = $xCred->getContratoCorriente(); $xPlanGen = new cPlanDePagosGenerador(); $xPlanGen->initPorCredito($solicitud); $FPrimerAb = $xPlanGen->getFechaDePrimerPago(); $xF = new cFecha(0, $FMinistracion); $FM_d = $xF->dia(); $FM_a = $xF->anno(); $FM_m = $xF->mes(); $xF2 = new cFecha(1, $FPrimerAb); $xF2->set($FPrimerAb); $PA_d = $xF2->dia(); $PA_a = $xF2->anno(); $PA_m = $xF2->mes(); $tab = new TinyAjaxBehavior(); //setLog("$PA_d --- $PA_m ---- $PA_a - - - - - $FPrimerAb"); $tab->add(TabSetvalue::getBehavior('ideldia1', $FM_d)); $tab->add(TabSetvalue::getBehavior('idelmes1', $FM_m)); $tab->add(TabSetvalue::getBehavior('idelanno1', $FM_a)); $tab->add(TabSetvalue::getBehavior('ideldia0', $PA_d)); $tab->add(TabSetvalue::getBehavior('idelmes0', $PA_m)); $tab->add(TabSetvalue::getBehavior('idelanno0', $PA_a)); $tab->add(TabSetvalue::getBehavior('idDescripcionSolicitud', $xCred->getShortDescription())); $tab->add(TabSetvalue::getBehavior('idcuenta', $contrato_corriente)); //$xCred->getPeriocidadDePago() != CREDITO_TIPO_PERIOCIDAD_CATORCENAL if ($xCred->getTipoEnSistema() == CREDITO_PRODUCTO_NOMINA) { $tab->add(TabSetvalue::getBehavior('idFormaDePago', $xCred->getTipoDePago())); //setLog("El pago es " . $xCred->getPeriocidadDePago() ); if ($xCred->getPeriocidadDePago() != CREDITO_TIPO_PERIOCIDAD_CATORCENAL) { $tab->add(TabSetvalue::getBehavior('idtipo_plan_pagos', CREDITO_TIPO_DIAS_DE_PAGO_PERSONALIZADOS)); } } return $tab->getString(); }
/** * Funcion que determina es Estatus de un Credito segun su Tipo de Pago * @param date $fecha_de_corte Fecha de Estimación * @param boolean $explain Explicar Estatus */ function setDetermineDatosDeEstatus($fecha_de_corte = false, $explain = false, $actualizar = false, $DPagos = false) { $xF = new cFecha(); $xLog = new cCoreLog(); $fecha_de_corte = $fecha_de_corte == false ? fechasys() : $fecha_de_corte; $fecha_de_corte_int = $xF->getInt($fecha_de_corte); $exoExplain = ""; $aviso = ""; if ($this->mCreditoInicializado == false) { $this->init(); } if ($this->getEsAfectable() == true) { $credito = $this->mNumeroCredito; $socio = $this->mNumeroSocio; $fecha_ministracion = $this->mFechaMinistracion; $fecha_vencimiento = $this->mFechaVencimiento; $pagos_autorizados = $this->mPagosAutorizados; $periocidad_pago = $this->mPeriocidadDePago; $dias_autorizados = $this->mDiasAutorizados; $tipo_de_pago = $this->mTipoDePago; $fecha_ultimo_mvto = $this->mFechaUltimoMvtoCapital; $saldo_insoluto = $this->mSdoCapitalInsoluto; $monto_ministrado = $this->mMontoMinistrado; $dias_tolerados_para_vencer = $this->mToleranciaEnDiasParaVcto; $estatus_actual = $this->mEstatusActual; $interes_diario = $this->mInteresDiario; $pagos_pendientes = $this->mPagosAutorizados; $xPer = $this->getOPeriocidad(); $OProd = $this->getOProductoDeCredito(); $dias_para_mora = $OProd->getDiasTolerados(); $dias_tolerados_para_vencer = $xPer->getDiasToleradosEnVencer(); $stat = array(); $ql = new MQL(); $stat[SYS_ESTADO] = $this->getEstadoActual(); $stat[SYS_CREDITO_DIAS_NORMALES] = 0; $stat[SYS_CREDITO_DIAS_MOROSOS] = 0; $stat[SYS_CREDITO_DIAS_VENCIDOS] = 0; $stat["fecha_de_inicio_de_pagos"] = $fecha_vencimiento; $xLog->add("----------CREDITO\t{$credito} --- Ministrado {$fecha_ministracion}\r\n", $xLog->DEVELOPER); if ($periocidad_pago == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) { //Tomado para los tipos 1: Pago unico a Final de Plazo --- 360 --- $mFechaDeInicio = $fecha_vencimiento; $mFechaDeMora = $xF->setSumarDias($dias_para_mora, $mFechaDeInicio); $mFechaDeVencimiento = $xF->setSumarDias($dias_tolerados_para_vencer, $mFechaDeMora); $letra_actualmente_pagada = $this->getPeriodoActual(); } else { //obtener la letra que debe pagar. $DFechas = is_array($DPagos) ? $DPagos : $ql->getDataRecord("SELECT * FROM historial_de_pagos WHERE credito={$credito} "); //============================================================== $DataFechas = array(); $Historico = array(); $letra_que_debe_estar_pagada = $this->getPeriodoActual(); $letra_actualmente_pagada = $this->getPeriodoActual(); //lo que se ha pagado $capital_pagado = 0; $capital_pendiente = 0; $interes_pagado = 0; $interes_pendiente = 0; $interes_nosaldado = 0; $terminado = false; //determina si ya termino la busqueda foreach ($DFechas as $rows) { $idxc = $rows["periodo"]; $DataFechas[$idxc][SYS_FECHA] = $rows["fecha"]; $DataFechas[$idxc][SYS_CAPITAL] = setNoMenorQueCero($rows["capital"]); $DataFechas[$idxc][SYS_MONTO] = setNoMenorQueCero($rows["pagos"]); $DataFechas[$idxc][SYS_INTERES_NORMAL] = setNoMenorQueCero($rows["interes"]); $DataFechas[$idxc]["SYS_INTERES_PAGADO"] = setNoMenorQueCero($rows["interes_pagado"]); $DataFechas[$idxc]["SYS_INTERES_SALDO"] = setNoMenorQueCero($rows["interes"] - $rows["interes_pagado"]); $capital_pendiente += $DataFechas[$idxc][SYS_CAPITAL]; $capital_pagado += $DataFechas[$idxc][SYS_MONTO]; $interes_pagado += $DataFechas[$idxc]["SYS_INTERES_PAGADO"]; $interes_pendiente += $DataFechas[$idxc][SYS_INTERES_NORMAL]; //$xLog->add("WARN\t$idxc\tAgregando pagos $capital_pendiente|$capital_pagado . $interes_pendiente|$interes_pagado \r\n", $xLog->DEVELOPER); //corregir if ($rows["fecha"] == "0000-00-00") { $idxAnterior = setNoMenorQueCero($idxc - 1); if (isset($DataFechas[$idxAnterior])) { $DataFechas[$idxc][SYS_FECHA] = $xF->setSumarDias($periocidad_pago, $DataFechas[$idxAnterior][SYS_FECHA]); $ql->setRawQuery("UPDATE operaciones_mvtos SET fecha_afectacion='" . $DataFechas[$idxc][SYS_FECHA] . "' WHERE docto_afectado={$credito} AND periodo_socio='{$idxc}' AND fecha_afectacion='0000-00-00' "); $xLog->add("ERROR\t{$idxc}\tFecha Invalida, corregida\r\n", $xLog->DEVELOPER); } } } //lo que debe pagarse for ($i = 1; $i <= $this->getPagosAutorizados(); $i++) { if ($terminado == false) { $idpagoanterior = setNoMenorQueCero($i - 1); $idpagoproximo = setNoMenorQueCero($i + 1); if (!isset($DataFechas[$i])) { //========================== $xLog->add("ERROR\t{$i}\tNumero de Pago con error\r\n", $xLog->DEVELOPER); $xPlan = new cPlanDePagosGenerador(); $xPlan->initPorCredito($this->mNumeroCredito, $this->getDatosInArray()); $fecha_de_referencia = $xF->setSumarDias($this->getPeriocidadDePago() * $i, $this->getFechaDeMinistracion()); $FechaDePago = $xPlan->getFechaDePago($fecha_de_referencia, $i); } else { $Datos = $DataFechas[$i]; $fecha = $Datos[SYS_FECHA]; if ($xF->getInt($fecha) <= $fecha_de_corte_int) { //creditos con solo interes if ($this->getPagosSinCapital() == true) { if ($Datos["SYS_INTERES_SALDO"] > 0) { $fecha = $xF->setSumarDias(1, $fecha); $xLog->add("WARN\t{$i}\tInicia la fecha de Mora en {$fecha} porque el interes es " . $Datos["SYS_INTERES_SALDO"] . " \r\n", $xLog->DEVELOPER); $FechaDePago = $fecha; $terminado = true; } } else { $saldoLetra = setNoMenorQueCero($Datos[SYS_CAPITAL] - $Datos[SYS_MONTO]); if ($saldoLetra > 0) { $fecha = $xF->setSumarDias(1, $fecha); $xLog->add("ERROR\t{$i}\tInicia la fecha de Mora en {$fecha} porque el Saldo de la Letra es {$saldoLetra} \r\n", $xLog->DEVELOPER); $FechaDePago = $fecha; $terminado = true; } } } else { $xLog->add("WARN\t{$i}\tFecha de Pago({$fecha}) Superior a la Fecha de corte ({$fecha_de_corte})\r\n", $xLog->DEVELOPER); $FechaDePago = $fecha; $terminado = true; } } } } //============================================================== if (!isset($FechaDePago)) { $xPlan = new cPlanDePagosGenerador(); $xPlan->initPorCredito($this->mNumeroCredito, $this->getDatosInArray()); $fecha_de_referencia = $xF->setSumarDias($this->getPeriocidadDePago() * $this->getPeriodoActual(), $this->getFechaDeMinistracion()); $FechaDePago = $xPlan->getFechaDePago($fecha_de_referencia, $this->getPeriodoActual()); $xLog->add("ERROR\tError en la Fecha. Se carga por estimacion {$FechaDePago} del periodo " . $this->getPeriodoActual() . " \r\n", $xLog->DEVELOPER); //corregir y actualizar } //$letra_que_debe_estar_pagada = ($letra_que_debe_estar_pagada ==0) ? 1 : $letra_que_debe_estar_pagada; //$FechaDePago = $Historico[$letra_que_debe_estar_pagada][SYS_FECHA]; $mFechaDeInicio = $FechaDePago; $mFechaDeMora = $xF->setSumarDias($dias_para_mora, $mFechaDeInicio); $mFechaDeVencimiento = $xF->setSumarDias($dias_tolerados_para_vencer, $mFechaDeMora); //$xLog->add("OK\t$idxc\t=" . $letra_que_debe_estar_pagada . "|" . $letra_actualmente_pagada . "|" . $FechaDePago . "|$mFechaDeInicio|$mFechaDeMora|$mFechaDeVencimiento\r\n", $xLog->DEVELOPER); // $xLog->add("Letra pagara $letra_actualmente_pagada , que debe pagar $letra_que_debe_estar_pagada\r\n", $xLog->DEVELOPER); //$pagos_pendientes = setNoMenorQueCero( $this->mPagosAutorizados - $letra_actualmente_pagada ); } $stat[SYS_CREDITO_DIAS_NORMALES] = setNoMenorQueCero($xF->setRestarFechas($mFechaDeMora, $fecha_ministracion)); $stat[SYS_CREDITO_DIAS_MOROSOS] = setNoMenorQueCero($xF->setRestarFechas($mFechaDeVencimiento, $mFechaDeMora)); $stat[SYS_CREDITO_DIAS_VENCIDOS] = setNoMenorQueCero($xF->setRestarFechas($fecha_de_corte, $mFechaDeVencimiento)); $stat["fecha_de_inicio"] = $mFechaDeInicio; $stat["fecha_de_mora"] = $mFechaDeMora; $stat["fecha_de_vencimiento"] = $mFechaDeVencimiento; /** * Calcular el Estatus por metodo reversivo */ if ($xF->getInt($fecha_de_corte) >= $xF->getInt($mFechaDeVencimiento)) { $xLog->add("ERROR\tA.VENC\tLa fecha de corte (" . $xF->getFechaCorta($fecha_de_corte) . ") es mayor a la de vencimiento(" . $xF->getFechaCorta($mFechaDeVencimiento) . ") por o que se da como ***VENCIDO***\r\n"); $stat[SYS_ESTADO] = CREDITO_ESTADO_VENCIDO; } else { if ($xF->getInt($fecha_de_corte) >= $xF->getInt($mFechaDeMora) and $xF->getInt($fecha_de_corte) < $xF->getInt($mFechaDeVencimiento)) { $xLog->add("WARN\tA.MOR\tLa fecha de corte (" . $xF->getFechaCorta($fecha_de_corte) . ") es mayor a la de Mora(" . $xF->getFechaCorta($mFechaDeMora) . ") y Menor a la Fecha de Vencimiento (" . $xF->getFechaCorta($mFechaDeVencimiento) . ") por lo que se da como ***MOROSO***\r\n"); $stat[SYS_ESTADO] = CREDITO_ESTADO_MOROSO; $stat[SYS_CREDITO_DIAS_VENCIDOS] = 0; } else { if ($xF->getInt($fecha_de_corte) < $xF->getInt($mFechaDeMora)) { $xLog->add("OK\tA.VIG\tLa fecha de corte (" . $xF->getFechaCorta($fecha_de_corte) . ") es mayor a la de Mora(" . $xF->getFechaCorta($mFechaDeMora) . ") por o que se da como ***VIGENTE***\r\n"); $stat[SYS_ESTADO] = CREDITO_ESTADO_VIGENTE; $stat[SYS_CREDITO_DIAS_VENCIDOS] = 0; $stat[SYS_CREDITO_DIAS_MOROSOS] = 0; } else { } } } $this->mFechaVencimientoLegal = $mFechaDeVencimiento; $this->mFechaMora = $mFechaDeMora; //if($actualizar == true){ $xLog->add("Se actualizaran saldos12\r\n", $xLog->DEVELOPER);} if ($explain == true) { $stat["notas"] = $xLog->getMessages(); } else { $stat["notas"] = ""; } if ($actualizar == true) { $arrUpdate = array("fecha_mora" => $mFechaDeMora, "fecha_vencimiento_dinamico" => $mFechaDeVencimiento, "estatus_actual" => $stat[SYS_ESTADO]); $this->setUpdate($arrUpdate); $xLog->add("WARN\tActualizar Fecha de Mora a {$mFechaDeMora} y Fecha de Vencimiento a {$mFechaDeVencimiento}\r\n", $xLog->DEVELOPER); } $this->mMessages .= $xLog->getMessages(); if ($explain == true) { $aviso .= $this->getMessages(OUT_HTML); $exoExplain = "<fieldset>\n <legend>Explicacion de estatus al " . $xF->getFechaCorta($fecha_de_corte) . "</legend>\n <table>\n <tbody>\n <tr>\n <th class='izq'>Fecha de Ministracion</th>\n <td>" . $xF->getFechaCorta($fecha_ministracion) . "</td>\n <th class='izq'>Fecha de Inicio de Pagos</th>\n <td>" . $xF->getFechaCorta($stat["fecha_de_inicio_de_pagos"]) . "</td>\n </tr>\n <tr>\n <th class='izq'>Pagos Autorizados</th>\n <td>{$pagos_autorizados}</td>\n <th class='izq'>Periocidad de Pagos</th>\n <td>{$periocidad_pago}</td>\n\n </tr>\n <tr>\n <th class='izq'>Monto Ministrado</th>\n <td>{$monto_ministrado}</td>\n <th class='izq' >Saldo Insoluto</th>\n <td>{$saldo_insoluto}</td>\n </tr>\n <tr>\n <th class='izq'>Pagos Efectuados</th>\n <td>{$letra_actualmente_pagada}</td>\n <th class='izq'>Pagos Pendientes</th>\n <td>{$pagos_pendientes}</td>\n </tr>\n <tr>\n <th class='izq'>Fecha de Inicio de Calculo</th>\n <td>" . $xF->getFechaCorta($mFechaDeInicio) . "</td>\n <th class='izq'>Fecha de Mora</th>\n <td>" . $xF->getFechaCorta($mFechaDeMora) . "</td>\n </tr>\n <tr>\n <th class='izq'>Fecha de Vencimiento</th>\n <td>" . $xF->getFechaCorta($mFechaDeVencimiento) . "</td>\n <th class='izq'>Estatus Determinado</th>\n <td>" . $stat["estatus"] . "</td>\n </tr>\n\n <tr>\n <th class='izq'>Dias Vigentes</th>\n <td>" . $stat[SYS_CREDITO_DIAS_NORMALES] . "</td>\n <th class='izq'>Dias Morosos</th>\n <td>" . $stat[SYS_CREDITO_DIAS_MOROSOS] . "</td>\n </tr>\n <tr>\n <th class='izq'>Dias Vencidos</th>\n <td>" . $stat[SYS_CREDITO_DIAS_VENCIDOS] . "</td>\n <th class='izq'>Tipo de Pago</th>\n <td >{$tipo_de_pago}</td>\n </tr>\n <tr>\n <th colspan='4'>{$aviso}</th>\n </tr>\n </tbody>\n </table>\n\t\t\t\t\t</fieldset>"; return $exoExplain; } else { return $stat; } } }
function setActualizarPrimerPago($default_fecha = "2014-01-01") { $xLi = new cSQLListas(); $query = new MQL(); $sql = $xLi->getInicialDeCreditos() . " WHERE `creditos_solicitud`.`fecha_de_primer_pago` ='{$default_fecha}'"; // AND `creditos_solicitud`.`periocidad_de_pago` != " . CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO . " "; $data = $query->getDataRecord($sql); $msg = ""; $FechaFinal = ""; $ByPersona1 = ""; $ByPersona3 = ""; $rsPagos = $query->getDataRecord("SELECT * FROM `creditos_abonos_parciales` WHERE periodo_socio = 1 "); // /*WHERE (`creditos_abonos_parciales`.`fecha_de_pago` <='$FechaFinal') $ByPersona1 */"); $DPagos = array(); foreach ($rsPagos as $dpags) { $credito = $dpags["docto_afectado"]; $DPagos[$credito][] = $dpags; } $rsCal = $query->getDataRecord("SELECT * FROM `letras` WHERE periodo_socio = 1 "); // /*WHERE (`fecha_de_pago` <='$FechaFinal') $ByPersona3 */"); $DCal = array(); foreach ($rsCal as $dscal) { $credito = $dscal["docto_afectado"]; $DCal[$credito][] = $dscal; } foreach ($data as $rows) { $idcredito = $rows["numero_solicitud"]; $antes = $rows["fecha_de_primer_pago"]; $periocidad = $rows["periocidad_de_pago"]; $FPrimerAb = false; $Tipo = ""; if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) { $xCred = new cCredito($idcredito); $xCred->init($rows); $FPrimerAb = $xCred->getFechaDevencimientoLegal(); } else { //info pagos $d1 = isset($DCal[$idcredito]) ? $DCal[$idcredito] : false; $d2 = isset($DPagos[$idcredito]) ? $DPagos[$idcredito] : false; if ($d2 == false) { if ($d1 != false) { $Tipo = "PLAN"; $record = $d2[0]; $FPrimerAb = $record["fecha_de_pago"]; } } else { $Tipo = "PAG"; $record = $d2[0]; $FPrimerAb = $record["fecha_de_pago"]; } if ($FPrimerAb == false) { $xPlanGen = new cPlanDePagosGenerador(); $xPlanGen->initPorCredito($idcredito, $rows); $FPrimerAb = $xPlanGen->getFechaDePrimerPago(); $Tipo = "EST"; } } $msg .= "WARN\t{$idcredito}\t{$Tipo}\tLa fecha de Primer abono es {$FPrimerAb} de {$antes}\r\n"; $query->setRawQuery("UPDATE creditos_solicitud SET `fecha_de_primer_pago`='{$FPrimerAb}' WHERE numero_solicitud = {$idcredito} "); } return $msg; }