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; }
$sucess = false; } //---------------------------------- ELIMINAR EL PLAN DE PAGOS ANTERIOR $xPlan = new cPlanDePagos(); if ($xCred->getNumeroDePlanDePagos() != false) { $xPlan->init($xCred->getNumeroDePlanDePagos()); $xPlan->setEliminar(); } if (MODO_CORRECION == true) { //my_query("DELETE FROM operaciones_mvtos WHERE socio_afectado=$socio AND docto_afectado=$solicitud AND (tipo_operacion=410 OR tipo_operacion=412 OR tipo_operacion=413)"); } if ($sucess == true) { $FInteres_normal = new cFormula("interes_normal"); $factor_interes = $xPlan->getFactorIVA($iva_incluido); $DatosDePagos = array(); if ($xCred->initPagosEfectuados() == true) { $DatosDePagos = $xCred->getListadoDePagos(); } //=========================== Corrige el Monto extra de bonificaciones ================================================================ $bonificaciones = 0; $xB = new cBases(7022); //base son bonificaciones $xB->init(); if ($xB->getIsMember($tipo_monto_extra) == true) { $msg .= "{$socio}\t{$solicitud}\tLa operacion {$tipo_monto_extra} es de Bonificaciones\r\n"; $bonificaciones = round($monto_extra / $PAGOS_AUTORIZADOS, 2); $monto_extra = 0; } //===================================================================================================================================== $total_ahorro = $monto_autorizado * $tasa_ahorro; $parcialidad_capital = ($FormaDePago == CREDITO_TIPO_PAGO_INTERES_PERIODICO or $FormaDePago == CREDITO_TIPO_PAGO_INTERES_COMERCIAL) ? 0 : $monto_autorizado / $PAGOS_AUTORIZADOS;
SaldoVencido NumeroPagosVencidos PagoActual HistoricoPagos ClavePrevencion TotalPagosReportados ClaveAnteriorOtorgante NombreAnteriorOtorgante NumeroCuentaAnterior */ //obtener parametros extras en una array //su valor es del producto $xCred = new cCredito($idcredito, $rw["numero_socio"]); $xCred->init($rw); if (isset($DPagos[$idcredito])) { $xCred->initPagosEfectuados($DPagos[$idcredito], $FechaFinal); ///$xLog->add("OK\t$icnt\tDatos del credito $idpersona|$idcredito SI existen \r\n", $xLog->DEVELOPER); } else { $xLog->add("WARN\t{$idpersona}-{$idcredito}\t{$sucres}\t{$icnt}\tDatos de Pago del credito {$idpersona}|{$idcredito} no existen \r\n", $xLog->DEVELOPER); } $ClaveActualOtorgante = $xCR->getClaveDeOtorgante(); // ENTIDAD_CLAVE_SIC; $NombreOtorgante = $xCR->getNombreOtorgante(); $CuentaActual = $rw["numero_solicitud"]; $xTConv = new cProductoDeCredito($rw["tipo_convenio"]); $xTConv->init(); $DTConv = $xTConv->getOtrosParametrosInArray(); $TipoDeResponsabilidad = isset($DTConv["SIC_TIPO_DE_RESPONSABILIDAD"]) ? $DTConv["SIC_TIPO_DE_RESPONSABILIDAD"] : "I"; //individual $TipoDeCuenta = isset($DTConv["SIC_TIPO_DE_CUENTA"]) ? $DTConv["SIC_TIPO_DE_CUENTA"] : "F"; //Pagos fijos
function init($arrData = false, $credito = false, $dataPagos = false) { $fecha = $this->mFechaDeCorte; $credito = $credito == false ? $this->mClaveDeCredito : $credito; $xCred = new cCredito($credito); $xCred->init($arrData); $xCred->initPagosEfectuados($dataPagos, $fecha); //setLog($dataPagos); $xSoc = new cSocio($xCred->getClaveDePersona()); $xSoc->init(); $this->mInfoLinea[1] = $this->getText($this->getClaveDeOtorgante()); $this->mInfoLinea[2] = $this->getText($this->getNombreOtorgante()); $this->mInfoLinea[3] = $this->getFechaDeReporte(); $this->mInfoLinea[4] = $this->getText($xSoc->getApellidoPaterno()); $this->mInfoLinea[5] = $this->getText($xSoc->getApellidoMaterno()); $this->mInfoLinea[6] = ""; $nombres = explode(" ", $xSoc->getNombre(), 2); $this->mInfoLinea[7] = isset($nombres[SYS_CERO]) ? $this->getText($nombres[SYS_CERO]) : ""; $this->mInfoLinea[8] = isset($nombres[SYS_UNO]) ? $this->getText($nombres[SYS_UNO]) : ""; $this->mInfoLinea[9] = $this->getDate($xSoc->getFechaDeNacimiento()); $this->mInfoLinea[10] = $this->getText($xSoc->getRFC()); $this->mInfoLinea[11] = isset($this->mTituloPersonal[$xSoc->getTipoGenero()]) ? $this->mTituloPersonal[$xSoc->getTipoGenero()] : ""; //Hiber Tadeo $this->mInfoLinea[12] = $this->getEstadoCivil($xSoc->getEstadoCivil()); $this->mInfoLinea[13] = $this->mEquivGenero[$xSoc->getTipoGenero()]; //TODO: terminar defuncion/muerte de la persona $this->mInfoLinea[14] = ""; $this->mInfoLinea[15] = ""; $xDom = $xSoc->getODomicilio(); if ($xDom == null) { for ($i = 16; $i <= 23; $i++) { $this->mInfoLinea[$i] = ""; } } else { $this->mInfoLinea[16] = $this->getText($xDom->getCalleConNumero()); $this->mInfoLinea[17] = ""; $this->mInfoLinea[18] = $this->getText($xDom->getColonia()); $this->mInfoLinea[19] = $this->getText($xDom->getMunicipio()); $this->mInfoLinea[20] = $this->getText($xDom->getCiudad()); $this->mInfoLinea[21] = $this->getText($xDom->getClaveDeEstadoEnSIC()); $this->mInfoLinea[22] = $this->getText($xDom->getCodigoPostal()); $xTel = $xSoc->getTelefonoPrincipal(); //Hiber Tadeo $this->mInfoLinea[23] = $xTel == 0 ? "" : $xTel; //Hiber Tadeo } $xAE = $xSoc->getOActividadEconomica(); if ($xAE == null) { $this->mInfoLinea[24] = $this->getText($xSoc->getRFC(true)); //Para Finsureste debe de ser este RFC del cliente $this->mInfoLinea[33] = 0; } else { $this->mInfoLinea[24] = $this->getText($xSoc->getRFC(true)); //Para Finsureste debe de ser este RFC del cliente//$this->getText($xAE->getNombreEmpresa()); $this->mInfoLinea[33] = $this->getText($xDom->getCalleConNumero()); //Para Finsureste debe de ser direccion del cliente //Hiber Tadeo Aca es direccion } //direccion 2 $this->mInfoLinea[25] = ""; $this->mInfoLinea[26] = $this->getText($xDom->getColonia()); //Para Finsureste $this->mInfoLinea[27] = $this->getText($xDom->getMunicipio()); //Para Finsureste $this->mInfoLinea[28] = $this->getText($xDom->getCiudad()); //Para Finsureste $this->mInfoLinea[29] = $this->getText($xDom->getClaveDeEstadoEnSIC()); //Para Finsureste $this->mInfoLinea[30] = $this->getText($xDom->getCodigoPostal()); //Para Finsureste $this->mInfoLinea[31] = $xTel == 0 ? "" : $xTel; //Hiber Tadeo //Para Finsureste $this->mInfoLinea[32] = ""; $this->mInfoLinea[34] = $this->getClaveDeOtorgante(); $this->mInfoLinea[35] = $this->getText($this->getNombreOtorgante()); $this->mInfoLinea[36] = $xCred->getNumeroDeCredito(); $this->mInfoLinea[38] = $this->getTipoDeCuenta($xCred->getTipoDePago()); //datos del convenio $DConv = $xCred->getOProductoDeCredito(); $this->mInfoLinea[37] = $this->getTipoDeResponsabilidad($DConv->getTipoDeIntegracion()); $this->mInfoLinea[39] = $DConv->getTipoDeContratoCR(); //"PL";//$DConv->getTipoDeContratoCR(); //Hiber Tadeo CL=LINEA DE CREDITO PL=PRESTAMO PERSONAL $this->mInfoLinea[40] = AML_CLAVE_MONEDA_LOCAL; //TODO: mejorar $this->mInfoLinea[41] = $xCred->getPagosAutorizados(); if ($xCred->getTipoEnSistema() == CREDITO_PRODUCTO_NOMINA) { //TODO: Parchar con el de TADEO $this->mInfoLinea[42] = "P"; } else { $this->mInfoLinea[42] = $this->mEquivFrecPagos[$xCred->getPeriocidadDePago()]; } $this->mInfoLinea[43] = $this->getDate($xCred->getFechaDeMinistracion()); $this->mInfoLinea[44] = $this->getMonto($xCred->getMontoDeParcialidad()); $this->mInfoLinea[45] = $this->getDate($xCred->getFechaUltimoDePago()); $this->mInfoLinea[46] = $this->getDate($xCred->getFechaDeMinistracion()); $this->mInfoLinea[47] = ""; //$this->getDate("2029-12-31" ); if ($xCred->getSaldoActual($fecha) <= TOLERANCIA_SALDOS) { $this->mInfoLinea[47] = $this->getDate($xCred->getFechaUltimoDePago()); } $this->mInfoLinea[48] = $this->getFechaDeReporte(); $DCapacidad = $xSoc->getOCapacidadDePago(); $this->mInfoLinea[49] = $this->getMonto($DCapacidad->getMontoDeCreditoMaximo()); $this->mInfoLinea[50] = $this->getMonto($xCred->getSaldoIntegrado($fecha)); //$xCred->getSaldoActual(); $this->mInfoLinea[51] = $this->getMonto($DCapacidad->getLimiteDeCredito()); $this->mInfoLinea[52] = $this->getMonto($xCred->getSaldoVencido()); //53 numero de pagos vencidos $this->mInfoLinea[53] = 0; //54 forma mop $this->mInfoLinea[54] = $xCred->getMOP($fecha); // ($this->mOut == OUT_CSV) ? "01" : "'01"; //55 clave de observacion, segun catalogo $this->mInfoLinea[55] = ""; //56 clave de otorgante anterior //57 nombre otorgante anterior $this->mInfoLinea[56] = ""; $this->mInfoLinea[57] = ""; $this->mInfoLinea[58] = ""; //Numero de cuenta anterior en caso de cartera tranferida $this->mInfoLinea[59] = $xCred->getFechaDePrimerAtraso() == null ? "" : $this->getDate($xCred->getFechaDePrimerAtraso()); //TODO: Fecha de Primera atraso $this->mInfoLinea[60] = $this->getMonto($xCred->getSaldoActual($fecha)); //Saldo Insoluto del Principal $this->mInfoLinea[61] = $this->getMonto($xCred->getMontoUltimoPago()); // $xCred->getMontoDeParcialidad();//0; //TODO: Monto de Ultimo pago if (MODO_DEBUG == true) { $this->mMessages .= $xCred->getMessages(OUT_TXT); } }