<?php 
echo getRawHeader();
$docto = $cuenta;
$fechaRecibo = date("Y-m-d");
$sql_d_ide = "SELECT * FROM operaciones_mvtos\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tfecha_operacion = '{$fechaRecibo}'\n\t\t\t\t\t\t\tAND docto_afectado = {$docto}\n\t\t\t\t\t\t\tAND tipo_operacion=235";
$dIDE = obten_filas($sql_d_ide);
$ide = $dIDE["afectacion_real"];
$xInv = new cCuentaInversionPlazoFijo($docto, false, 0);
$dcuentas = $xInv->getDatosInArray();
$idsocio = $dcuentas["numero_socio"];
$docto = $dcuentas["numero_cuenta"];
$dias = $dcuentas["dias_invertidos"];
$tasa = $dcuentas["tasa_otorgada"];
$capital = $dcuentas["saldo_cuenta"];
// + $ide);(
$vencimiento = sumardias($dcuentas["inversion_fecha_vcto"], $dias);
$interes = $capital * $dias * $tasa / EACP_DIAS_INTERES;
$xSoc = new cSocio($idsocio);
$xSoc->init();
$DSoc = $xSoc->getDatosInArray();
$domicilio_del_socio = $xSoc->getDomicilio();
$nombre_del_socio = $xSoc->getNombreCompleto();
$numero_de_socio = $idsocio;
$tasa = getFMoney($tasa * 100);
$isr = getISRByInversion($capital, $dias);
$aliquidar = $capital + $interes - $isr;
$nombre = $nombre_del_socio;
echo "\n\t<p class='bigtitle'>CONSTANCIA PROVISIONAL DE DEPOSITO A PLAZO</p>\n\t<hr />";
// obtiene datos del socio
$direccion = $domicilio_del_socio;
$rfc = $DSoc["rfc"];
             $afected_row = mysql_affected_rows($rs);
             @mysql_free_result($rs);
             //Generar la Notificacion si existe una Llamada sin compromiso
             if ($afected_row > 0) {
                 $fecha_venc_notif = sumardias($fecha_default, $dias_para_notificar);
                 $sql_notif = "INSERT INTO seguimiento_notificaciones\n\t\t\t\t\t\t\t\t(socio_notificado, numero_solicitud, numero_notificacion, fecha_notificacion, oficial_de_seguimiento, fecha_vencimiento,\n\t\t\t\t\t\t\t\tprocedimiento_proximo, capital, interes, moratorio, otros_cargos, total, observaciones, estatus_notificacion, tipo_credito, domicilio_completo)\n\t\t\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t\t({$socio}, {$solicitud}, {$idnnew}, '{$fecha_default}', {$iduser}, '{$fecha_venc_notif}', '{$tnotif}',\n\t\t\t\t\t\t\t\t{$mletra}, {$interes}, {$interes_moratorio}, {$otros_cargos}, {$total}, '{$observaciones}', 'pendiente', 'automatizado', '{$domicilio}')";
                 $x = my_query($sql_notif);
                 if ($x["stat"] == false) {
                     $msg .= date("H:s:i") . "\t\t" . $x[SYS_MSG] . "\t\n";
                 } else {
                     $msg .= date("H:s:i") . "\t\t" . $x["info"] . "\t\n";
                 }
             }
         } else {
             //Generar la Notificacion
             $fecha_venc_notif = sumardias($fecha_default, $dias_para_notificar);
             $sql_notif = "INSERT INTO seguimiento_notificaciones\n\t\t\t\t(socio_notificado, numero_solicitud, numero_notificacion, fecha_notificacion, oficial_de_seguimiento, fecha_vencimiento,\n\t\t\t\tprocedimiento_proximo, capital, interes, moratorio, otros_cargos, total, observaciones, estatus_notificacion, tipo_credito, domicilio_completo)\n\t\t\t\tVALUES\n\t\t\t\t({$socio}, {$solicitud}, {$idnnew}, '{$fecha_default}', {$iduser}, '{$fecha_venc_notif}', '{$tnotif}',\n\t\t\t\t{$mletra}, {$interes}, {$interes_moratorio}, {$otros_cargos}, {$total}, '{$observaciones}', 'pendiente', 'automatizado', '{$domicilio}')";
             $x = my_query($sql_notif);
             if ($x["stat"] == false) {
                 $msg .= date("H:s:i") . "\t\t" . $x[SYS_MSG] . "\t\n";
             } else {
                 $msg .= date("H:s:i") . "\t\t" . $x["info"] . "\t\n";
             }
         }
     } elseif ($dias_vencidos > 60) {
         //Inicio Proc. Extrajudicial
     }
 }
 //end while
 fwrite($RFile, $msg);
 @mysql_free_result($rsPic);
 /**
  * Funcion que genera el Credito Reconvenido
  * @param float $monto_reconvenido	Monto del capital por el Cual se reconviene el credito
  * @param float $interes_reconvenido	Monto del interes por el Cual se reconviene el credito
  *
  * @return boolean false/true 			segun el resultado de la funcion
  */
 function setReconvenido($monto_reconvenido, $interes_reconvenido, $tasa_reconvenida, $periocidad_reconvenida, $pagos_reconvenidos, $observaciones = "", $fecha = false, $recibo = false, $FormaDePago = false, $producto = false, $conservarPlan = false)
 {
     $sucess = false;
     $fecha = $fecha == false ? fechasys() : $fecha;
     $producto = $producto == false ? $this->getClaveDeProducto() : $producto;
     $plan_de_pagos = $this->getNumeroDePlanDePagos();
     if ($this->mCreditoInicializado == true) {
         $dias = $periocidad_reconvenida * $pagos_reconvenidos;
         $vence = sumardias($fecha, $dias);
         $credito = $this->getNumeroDeCredito();
         //$interes_normal = ($saldo_historico * $dias_normales * ($tasa_interes * $factor_interes)) / EACP_DIAS_INTERES;
         $interes_normal = 0;
         $FInteres = new cFormula("interes_normal");
         $saldo_historico = $this->getMontoAutorizado();
         // $monto_reconvenido;
         $saldo_actual = $this->getSaldoActual();
         //$monto_reconvenido;
         $dias_normales = $dias;
         $tasa_interes = $tasa_reconvenida;
         $factor_interes = 1;
         if ($this->mIVAIncluido == "1") {
             $factor_interes = 1 / (1 + $this->getTasaIVA());
         }
         //eval( $FInteres->getFormula() );
         //Agregar el SQL
         $xRC = new cCreditos_reconvenio();
         $idconvenio = $xRC->query()->getLastID();
         $xRC->idcreditos_reconvenio($idconvenio);
         $xClon = $this->setClonar($saldo_actual, $saldo_historico);
         $xRC->numero_solicitud($xClon);
         $xRC->codigo($this->getClaveDePersona());
         $xRC->credito_origen($this->getNumeroDeCredito());
         $xRC->dias($dias);
         $xRC->eacp(EACP_CLAVE);
         $xRC->fecha_reconvenio($fecha);
         $xRC->idusuario(getUsuarioActual());
         $xRC->interes_diario_re($interes_normal);
         $xRC->interes_pendiente($interes_reconvenido);
         $xRC->monto_reconvenido($monto_reconvenido);
         $xRC->pagos_reconvenidos($pagos_reconvenidos);
         $xRC->periocidad_reconvenida($periocidad_reconvenida);
         $xRC->sucursal(getSucursal());
         $xRC->tasa_reconvenida($tasa_reconvenida);
         $xRC->vence($vence);
         $x = $xRC->query()->insert()->save();
         if ($x != false) {
             //Modificar movimientos
             $observaciones = $observaciones == "" ? "" : "RNV {$idconvenio}. {$credito}|{$xClon}";
             //Agregare el Movimiento
             $cRecReest = new cReciboDeOperacion(RECIBOS_TIPO_ESTADISTICO, true, $recibo);
             if ($recibo == false) {
                 $cRecReest->setNuevoRecibo($this->mNumeroSocio, $xClon, $fecha, 1, RECIBOS_TIPO_ESTADISTICO, $observaciones, DEFAULT_CHEQUE, TESORERIA_COBRO_NINGUNO, DEFAULT_RECIBO_FISCAL, $this->mGrupoAsociado);
             }
             /*
              * No generar poliza, ya que no ha cumplido el pago sostenido
              */
             //agregar Movimiento por el Monto Reconvenido
             $cRecReest->setNuevoMvto($fecha, $monto_reconvenido, OPERACION_CLAVE_REESTRUCTURA, 1, $observaciones, 1);
             $this->mMessages .= $cRecReest->getMessages();
             //agregar el Movimiento por Intereses no pagados
             $xCredClon = new cCredito($xClon);
             $xCredClon->init();
             //Actualizar el saldo y demas
             $cEsUp = array($this->obj()->tipo_autorizacion()->get() => CREDITO_AUTORIZACION_REESTRUCTURADO, $this->obj()->saldo_vencido()->get() => 0);
             $xCredClon->setUpdate($cEsUp);
             $this->setUpdate($cEsUp);
             $xCredClon->setAbonoCapital($this->getSaldoActual(), $this->mParcialidadActual, DEFAULT_CHEQUE, TESORERIA_COBRO_NINGUNO, DEFAULT_RECIBO_FISCAL, $observaciones);
             $this->mMessages .= $xCredClon->getMessages();
             $sucess = true;
             $this->mMessages .= $this->setChangeNumeroDeSolicitud($xClon, true);
             //Cambiar Producto
             $this->mMessages .= $this->setCambioProducto($producto, $tasa_reconvenida);
             //cambiar fecha de ministracion
             $this->mMessages .= $this->setCambiarFechaMinistracion($fecha);
             //Cambiar Monto Ministrado
             //
             $this->mMessages .= $this->setCambiarMontoAutorizado($monto_reconvenido, true);
             //Ministrar
             $this->setForceMinistracion();
             $this->setMinistrar(DEFAULT_RECIBO_FISCAL, DEFAULT_CHEQUE, $monto_reconvenido, DEFAULT_CUENTA_BANCARIA, 0, 0, "REESTRUCTURA DE CREDITO {$xClon} ", $fecha, false, TESORERIA_PAGO_NINGUNO);
             if ($this->getTasaDeInteres() != $tasa_reconvenida) {
                 $this->mMessages .= $this->setCambiarTasaNormal($tasa_reconvenida);
             }
             $this->mMessages .= $this->setCambiarPeriocidad($periocidad_reconvenida, $pagos_reconvenidos, $FormaDePago);
             $this->mMessages .= $this->setCambiarMontoMinistrado($monto_reconvenido, true);
             if ($conservarPlan == true) {
                 if ($plan_de_pagos != false) {
                     //$xRec		= new cReciboDeOperacion(RECIBOS_TIPO_PLAN_DE_PAGO, true, $plan_de_pagos);
                     //$xRec->init();
                     //$xRec->setDocumento($this->getNumeroDeCredito());
                     $xPlan = new cPlanDePagos($plan_de_pagos);
                     //$xPlan->init();
                     $xPlan->setCambiarRelacionados($credito);
                     $this->mMessages .= $xPlan->getMessages(OUT_TXT);
                 }
             }
         }
         //END IF
         //$this->setReestructurarIntereses();
     }
     //END Credito Inicializado
     return $sucess;
 }
 function __construct($numero_de_cuenta, $socio = 0, $dias_invertidos = 0, $tasa = false, $fecha = false)
 {
     $xT = new cTipos();
     $this->mNumeroCuenta = $xT->cInt($numero_de_cuenta);
     $xF = new cFecha();
     $socio = $xT->cInt($socio);
     if ($socio != 0) {
         $this->mSocioTitular = $socio;
     }
     $this->mFechaOperacion = $fecha == false ? fechasys() : $fecha;
     $tasa = $tasa == false ? 0 : $tasa;
     if (isset($numero_de_cuenta)) {
         $this->init();
         //Datos para Operar
         //Inicia los dias Invertidos y la Tasa de Interes
         $this->mDiasInvertidos = $dias_invertidos > 0 ? $dias_invertidos : $this->mDiasInvertidos;
         $this->mTasaInteres = $tasa > 0 ? $tasa : $this->mTasaInteres;
         //Asigna la fecha de Vencimiento
         $this->mFechaVencimiento = $dias_invertidos > 0 ? sumardias($this->mFechaOperacion, $this->mDiasInvertidos) : $this->mFechaVencimiento;
         //Array de estatus no permitidos para operar
         $this->mEstatusNoOperativos = array(20, 30, 31);
     }
     //vuelve a verificar los datos, despues de iniciar las cuentas
     $this->mDiasInvertidos = (!isset($this->mDiasInvertidos) or $this->mDiasInvertidos == false) ? 0 : $this->mDiasInvertidos;
     $this->mTasaInteres = (!isset($this->mTasaInteres) or $this->mTasaInteres == false) ? 0 : $this->mTasaInteres;
     //Asigna la fecha de Vencimiento
     $this->mFechaVencimiento = (!isset($this->mFechaVencimiento) or $this->mFechaVencimiento == false) ? fechasys() : $this->mFechaVencimiento;
 }
 function vencer_intereses_de_inversion($recibo = false, $fecha = false)
 {
     //DATE_ADD(CURDATE(), INTERVAL 1 DAY)
     //Vencer los Intereses de las Inversiones de Ma�ana
     $fecha_programada = sumardias($fecha, 1);
     $sucursal = getSucursal();
     $msg = "================= VENCIMIENTO_DE_INTERESES_SOBRE_INVERSION DEL DIA {$fecha_programada} =========\r\n";
     $SQL500 = "SELECT\n\t\t\t\t\t  `operaciones_mvtos`.*\n\t\t\t\t\tFROM\n\t\t\t\t\t  `operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\tWHERE\n\t\t\t\t\t  (`operaciones_mvtos`.`fecha_afectacion` = '{$fecha_programada}')\n\t\t\t\t\t  AND\n\t\t\t\t\t  (`operaciones_mvtos`.`tipo_operacion` = 500)\n\t\t\t\t\t  AND\n\t\t\t\t\t  (`operaciones_mvtos`.`sucursal`='{$sucursal}')";
     $rs = mysql_query($SQL500, cnnGeneral());
     if (!$rs) {
         $msg .= "LA CONSULTA NO SE EJECUTO (CODE: " . mysql_errno() . ")";
     }
     while ($rw = mysql_fetch_array($rs)) {
         $iddocto = $rw["docto_afectado"];
         $idsocio = $rw["socio_afectado"];
         $interes = $rw["afectacion_real"];
         //Informacion de la Cuenta
         $xCta = new cCuentaInversionPlazoFijo($iddocto, $idsocio);
         $xCta->init();
         $infoCapt = $xCta->getDatosInArray();
         $saldo = $infoCapt["saldo_cuenta"];
         $periodo = $infoCapt["inversion_periodo"];
         $dias = $infoCapt["dias_invertidos"];
         $destinoInteres = $infoCapt["destino_del_interes"];
         $cuenta_de_int = $infoCapt["cuenta_de_intereses"];
         $isr_a_retener = 0;
         //CUENTA_INTERESES
         //Suma el Interes mas el Capital
         switch ($destinoInteres) {
             case "":
                 $montofinal = $saldo;
                 $xIC = cCuentaALaVista($idsocio, $cuenta_de_int);
                 $xIC->init();
                 $xIC->setDeposito($interes, "NA", "ninguno", "NA", "DEPOSITO_AUTOMATICO_INVERSION_CTA_{$iddocto}", 99, $fecha, $recibo);
                 setPolizaProforma($recibo, 222, $interes, $idsocio, $cuenta_de_int, TM_ABONO);
                 $msg .= $xIC->getMessages();
                 break;
             default:
                 $montofinal = $saldo + $interes;
                 //Agregar el Movimiento, 222 == depositos de Interes
                 setNuevoMvto($idsocio, $iddocto, $recibo, $fecha_programada, $interes, 222, $periodo, "DEPOSITO_AUTOMATICO");
                 $msg .= date("H:i:s") . "\t{$idsocio}\t{$iddocto}\tAgregando el INTERES POR DEPOSITAR por {$interes}\r\n";
                 setPolizaProforma($recibo, 222, $interes, $idsocio, $iddocto, TM_ABONO);
                 break;
         }
         setPolizaProforma($recibo, 500, $interes, $idsocio, $iddocto, TM_CARGO);
         /**
          * Generar el ISR por Inversiones
          */
         $isr_a_retener = getISRByInversion($saldo, $dias);
         //
         if ($isr_a_retener > 0) {
             setNuevoMvto($idsocio, $iddocto, $recibo, $fecha_programada, $isr_a_retener, 234, $periodo, "ISR_AUTOMATICO", -1);
             $msg .= date("H:i:s") . "\t{$idsocio}\t{$iddocto}\tAgregando el ISR por RETENER por {$isr_a_retener}\r\n";
             //Agregar la Prepoliza
             setPolizaProforma($recibo, 222, $isr_a_retener, $idsocio, $iddocto, TM_CARGO);
             setPolizaProforma($recibo, 234, $isr_a_retener, $idsocio, $iddocto, TM_ABONO);
             //Disminuir el ISR del Monto a Pagar
             $montofinal -= $isr_a_retener;
         }
         //Actualizar la Cuenta de Captacion
         $sqlUCta = "UPDATE captacion_cuentas\n\t                SET\n\t                  fecha_afectacion='{$fecha_programada}',\n\t                  saldo_cuenta={$montofinal}\n\t                WHERE numero_cuenta={$iddocto}\n\t                  AND\n\t                  numero_socio={$idsocio}";
         $x = my_query($sqlUCta);
         if ($x["stat"] == false) {
             $msg .= $x[SYS_MSG] . "\r\n";
         } else {
             $msg .= date("H:i:s") . "\t{$idsocio}\t{$iddocto}\tActualizando la Cuenta a Saldo {$montofinal} y Fecha Afectacion {$fecha_programada} \r\n";
         }
     }
     //fin de busqueda
     $SQL_U_500 = "UPDATE operaciones_mvtos SET\n\t\t\t        estatus_mvto=30,\n\t\t\t        docto_neutralizador = {$recibo}\n\t\t\t        WHERE\n\t\t\t          (`operaciones_mvtos`.`fecha_afectacion` = '{$fecha_programada}')\n\t\t\t          AND\n\t\t\t          (`operaciones_mvtos`.`tipo_operacion` = 500)\n\t\t\t        AND\n\t\t\t        (`operaciones_mvtos`.`sucursal`='{$sucursal}')";
     $x = my_query($SQL_U_500);
     if ($x["stat"] == false) {
         $msg .= $x[SYS_MSG] . "\r\n";
     } else {
         $msg .= date("H:i:s") . "\t\t\tActualizando el INTERES POR DEPOSITAR a 'PAGADO' (" . $x["info"] . ")\r\n";
     }
     return $msg;
 }
 }
 /*------------------------------ Obtiene datos mediante sentencias dinamicas */
 $estatusactual = 98;
 /* Determina si el Pago es en una sola Ministracion, genera el IDAD */
 if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
     $intdev = $idmonto * $tasaot / EACP_DIAS_INTERES;
     // Interes Diario para Pagos Fijos
     $idpagos = 1;
     $fechavcto = $ds_sol["fecha_vencimiento"];
     $diasaut = restarfechas($fechavcto, $fecha_ministracion_propuesta);
     $msg .= "WARN\tLos Dias Autorizados cambian a {$diasaut}, se respeta la fecha de vencimiento ({$fechavcto})\r\n";
     $xFRM->addCreditoComandos($idsolicitud);
 } else {
     $intdev = $idmonto * $tasaot / EACP_DIAS_INTERES;
     // Interes Diario a Cero para otros Casos
     $fechavcto = sumardias($fecha_ministracion_propuesta, $diasaut);
     $msg .= "WARN\tLa Fecha de Vencimiento es actualizada al " . getFechaLarga($fechavcto) . "; los dias autorizados son de {$diasaut}\r\n";
     $msg .= "WARN\tPARA OBTENER LOS DEMAS DOCUMENTOS DEBE GENERAR EL PLAN DE PAGOS\r\n";
 }
 /* ------------------------------ sentencia update -------------------------- */
 if ($sucess == true) {
     $xCred->setAutorizado($idmonto, $idpagos, $periocidad, $TipoDeAutorizacion, $fechaaut, $idautorizacion, $idtipodepago, $fecha_ministracion_propuesta, $idnivelderiesgo, $diasaut, $fechavcto, $estatusactual, $sdoactual, $intdev, $fechaultmvto, $TasaDeInteres);
     /* si es Credito de Grupos solidarios, Actualiza los Mvtos de Otorgacion */
     if ($OConv->getEsProductoDeGrupos() == true) {
         $sqlusolc = "UPDATE operaciones_mvtos\tSET estatus_mvto = 10\tWHERE\n\t\t\t\tgrupo_asociado={$gpoasoc}\tAND (tipo_operacion=112) AND (estatus_mvto=40)";
         my_query($sqlusolc);
     }
     //Eliminar Plan de Pagos
     $plan = setNoMenorQueCero($xCred->getNumeroDePlanDePagos());
     if ($plan > 0) {
         $xPlan = new cPlanDePagos($plan);
 function getDiaAbonoQuincenal($dia_primer_periodo, $dia_segundo_periodo, $date = false)
 {
     $this->set($date);
     $dias_del_mes = $this->getDiasDelMes();
     $dia_en_el_mes = $this->dia();
     $fecha_de_pago = $date == false ? $this->mFecha : $date;
     $dif_mes = 0;
     $dias_ajustados = 0;
     $diferencia_en_el_mes = 0;
     $i_primer_periodo = $dia_primer_periodo - 8;
     if ($i_primer_periodo < 0) {
         $i_primer_periodo = 0;
     }
     $f_primer_periodo = $dia_primer_periodo + 8;
     $i_segundo_periodo = $dia_segundo_periodo - 8;
     if ($i_segundo_periodo < $f_primer_periodo) {
         $i_segundo_periodo = $f_primer_periodo + 1;
     }
     $f_segundo_periodo = $dia_segundo_periodo + 8;
     if ($f_segundo_periodo > $dias_del_mes) {
         $f_segundo_periodo = $dias_del_mes;
     }
     if ($dia_en_el_mes >= $i_primer_periodo && $dia_en_el_mes <= $f_primer_periodo) {
         $fecha_de_pago = date("Y-m", strtotime($date)) . "-" . $dia_primer_periodo;
     } elseif ($dia_en_el_mes >= $i_segundo_periodo && $dia_en_el_mes <= $f_segundo_periodo) {
         $fecha_de_pago = date("Y-m", strtotime($date)) . "-" . $dia_segundo_periodo;
     } elseif ($dia_en_el_mes > $f_segundo_periodo) {
         $diferencia_en_el_mes = $dias_del_mes - $dia_en_el_mes;
         $dias_ajustados = $diferencia_en_el_mes + $dia_primer_periodo;
         $fecha_de_pago = sumardias($date, $dias_ajustados);
     }
     return $fecha_de_pago;
 }
 $apellidopaterno = "";
 if ($clavedepersona == DEFAULT_SOCIO) {
     $sucess = false;
     $msg .= "ERROR\tEl Usuario debe estar relacionado con una persona\r\n";
 } else {
     $xSoc = new cSocio($clavedepersona);
     $xSoc->init();
     $nombrecompleto = $xSoc->getNombre();
     $apellidomaterno = $xSoc->getApellidoMaterno();
     $apellidopaterno = $xSoc->getApellidoPaterno();
 }
 $nivelacceso = $_POST["idNivelAcceso"];
 $puesto = $_POST["idPuesto"];
 $estatus = "activo";
 $sucursal = $_POST["idSucursal"];
 $FechaDeExpiracion = sumardias(fechasys(), EXPIRE_PASSWORDS_IN_DAYS);
 $xBtn = new cHButton("");
 $oFRM = new cHForm("frmausuarios", "altausuarios.frm.php");
 foreach ($_POST as $campo => $valor) {
     //echo "$campo === $valor<br />";
 }
 if (strlen($nombreusuario) > 20) {
     $msg .= "ERROR\tEl Nombre de Usuario no puede tener mas de 20 caracteres\r\n";
     $sucess = false;
 }
 if (strlen($nombreusuario) < 4) {
     $msg .= "ERROR\tEl Nombre de Usuario no puede tener menos de 4 caracteres\r\n";
     $sucess = false;
 }
 if ($nivelacceso >= $_SESSION["SN_d567c9b2d95fbc0a51e94d665abe9da3"]) {
     $msg .= "ERROR\tUsted no Puede Asignar Permisos Mayores a su Nivel\r\n";
     $socio = $rw["numero_socio"];
     $credito = $rw["numero_solicitud"];
     $fecha_de_ministracion = $rw["fecha_ministracion"];
     $dias = $rw["dias_autorizados"];
     $tipo_de_pago = $rw["tipo_de_pago"];
     $tipo_de_calculo_int = $rw["tipo_de_calculo_de_interes"];
     $monto_ministrado = $rw["monto_ministrado"];
     //credito
     //fecha de ministraci�n
     //fecha de
     $dias_transcurridos = restarfechas($fecha_de_migracion, $fecha_de_ministracion);
     $abonos = 0;
     $intereses = 0;
     $moratorios = 0;
     for ($i = 0; $i <= $dias_transcurrridos; $i++) {
         $fecha_de_corte = sumardias($fecha_de_ministracion, $i);
         $isKey = "{$credito}-{$fecha_de_corte}";
         $capital = round($arrPagos[$isKey . "-120"], 2);
         $interes = round($arrPagos[$isKey . "-140"], 2) + round($arrPagos[$isKey . "-142"], 2);
         $mora = round($arrPagos[$isKey . "-141"], 2);
         $abonos += $capital;
         $intereses += $interes;
         $moratorios += $mora;
         $saldo = $monto_ministrado - $abonos;
         $estatus = 10;
         $sqlIEvent = "INSERT INTO creditos_datos_dinamicos\n\t\t\t\t\t\t\t\t\t\t\t\t(numero_de_credito, numero_de_socio, fecha_de_corte, saldo,\n\t\t\t\t\t\t\t\t\t\t\t\tnumero_de_parcialidad, estatus_del_credito, estatus_de_la_parcialidad,\n\t\t\t\t\t\t\t\t\t\t\t\tfecha_de_mora, fecha_de_vencimiento,\n\n\t\t\t\t\t\t\t\t\t\t\t\tabono_interes_normal,\n\t\t\t\t\t\t\t\t\t\t\t\tabono_interes_moratorio,\n\t\t\t\t\t\t\t\t\t\t\t\tinteres_normal_devengado,\n\t\t\t\t\t\t\t\t\t\t\t\tinteres_moratorio_devengado,\n\n\t\t\t\t\t\t\t\t\t\t\t\tsuma_interes_normal_devengado,\n\t\t\t\t\t\t\t\t\t\t\t\tsuma_interes_normal_pagado,\n\t\t\t\t\t\t\t\t\t\t\t\tsuma_interes_moratorio_devengado,\n\t\t\t\t\t\t\t\t\t\t\t\tsuma_interes_moratorio_pagado\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t\t\t\t\t\t\t({$credito}, {$socio}, '{$fecha_de_corte}',\n\t\t\t\t\t\t\t\t\t\t\t\t{$saldo}, 1, {$estatus}, 10,\n\t\t\t\t\t\t\t\t\t\t\t\t'2009-3-7', '2009-3-7',\n\t\t\t\t\t\t\t\t\t\t\t\t{$interes}, {$mora}, 0, 0,\n\t\t\t\t\t\t\t\t\t\t\t\t0, 0, 0, 0) ";
     }
 }
 //Iniciar dia uno, sumar cada caso
 //Determinar el Estatus
 break;
function setNuevoMvto($socio, $solicitud, $recibo, $fecha_operacion, $monto, $tipo_operacion, $parcialidad, $observaciones, $signo_afectacion = 1)
{
    $sucess = false;
    // --------------------------------------- VALOR SQL DEL MVTO.-------------------------------------------------------
    // VALORES FIJOS
    $smf = "idusuario, codigo_eacp, socio_afectado, docto_afectado, recibo_afectado, fecha_operacion, ";
    // PERIODOS
    $smf .= "periodo_contable, periodo_cobranza, periodo_seguimiento, ";
    $smf .= "periodo_anual, periodo_mensual, periodo_semanal, ";
    // AFECTACIONES
    $smf .= "afectacion_cobranza, afectacion_contable, afectacion_estadistica, ";
    $smf .= "afectacion_real, valor_afectacion, ";
    // FECHAS Y TIPOS
    $smf .= "idoperaciones_mvtos, tipo_operacion, estatus_mvto, periodo_socio, ";
    $smf .= "fecha_afectacion, fecha_vcto, ";
    // SALDOS
    $smf .= "saldo_anterior, saldo_actual, detalles, sucursal, tasa_asociada, dias_asociados";
    //
    $iduser = $_SESSION["SN_b80bb7740288fda1f201890375a60c8f"];
    $eacp = EACP_CLAVE;
    // PERIODOS
    $percont = EACP_PER_CONTABLE;
    // Periodo Contable
    $percbza = EACP_PER_COBRANZA;
    // Periodo Cobranza.
    $perseg = EACP_PER_SEGUIMIENTO;
    // Period de Seguimiento.
    $permens = date("m", strtotime($fecha_operacion));
    // Periodo mes
    $persem = date("W", strtotime($fecha_operacion));
    // Periodo de dias en la semana.
    $peranual = date("Y", strtotime($fecha_operacion));
    // A�o Natural.
    $persoc = $parcialidad;
    // periodo del Socio.
    $estatus_mvto = 30;
    //$signo_afectacion = 1;
    //Obtiene la Afectacion por la afectacion el recibo
    //$sqlTMvto 	= "SELECT afectacion_en_recibo FROM operaciones_tipos WHERE idoperaciones_tipos=$tipo_operacion LIMIT 0,1";
    //$dFils		= obten_filas($sqlTMvto);
    //$signo_afectacion = $dFils["afectacion_en_recibo"];
    if (!$signo_afectacion) {
        $signo_afectacion = 1;
    }
    $fecha_vcto = sumardias($fecha_operacion, DIAS_PAGO_VARIOS);
    $sucursal = getSucursal();
    if ($monto < 0) {
        //$signo_afectacion = -1;
        //$monto = $monto  * -1;
    }
    $afect_cbza = $monto;
    $afect_seg = $monto;
    $afect_cont = $monto;
    $afect_esta = $monto;
    $idoperacion = folios(2);
    $smv = "{$iduser}, '{$eacp}', {$socio}, {$solicitud}, {$recibo}, '{$fecha_operacion}',\r\n\t\t\t\t\t{$percont}, {$percbza}, {$perseg}, {$peranual}, {$permens}, {$persem},\r\n\t\t\t\t\t{$afect_cbza}, {$afect_cont}, {$afect_esta},\r\n\t\t\t\t\t{$monto}, {$signo_afectacion},\r\n\t\t\t\t\t{$idoperacion}, {$tipo_operacion}, {$estatus_mvto}, {$persoc},\r\n\t\t\t\t\t'{$fecha_operacion}', '{$fecha_vcto}',\r\n\t\t\t\t\t0, {$monto}, '{$observaciones}', '{$sucursal}', 0, 0\r\n\t\t\t\t\t";
    $SQl_comp = "INSERT INTO operaciones_mvtos({$smf}) VALUES ({$smv})";
    if ($monto != 0) {
        $exec = my_query($SQl_comp);
        if ($exec["stat"] == false) {
            $sucess = false;
        } else {
            $sucess = true;
        }
    }
    return $sucess;
}
 function setGenerarPlanDePagos()
 {
     $msg = "";
     $cRec = new cReciboDeOperacion(10);
     $xRec = $cRec->setNuevoRecibo(DEFAULT_SOCIO, DEFAULT_CREDITO, fechasys(), 1, 10, "RECIBO_DE_AJUSTES_DE_PLAN_DE_PAGOS");
     $msg .= "\t\tRECIBO\tEl Recibo de Operacion es {$xRec}\r\n";
     $cRec->setNumeroDeRecibo($xRec, true);
     //Concilia Creditos sin Planes de Pago a SISBANCS
     $sql = "SELECT * FROM creditos_solicitud WHERE (SELECT\n\t\t\t\t\t\t\t\tCOUNT(credito) FROM sisbancs_suma_amorizaciones\n\t\t\t\t\t\t\t\tWHERE credito = creditos_solicitud.numero_solicitud) = 0\n\t\t\t\t\t\t\t\tAND saldo_actual > 0\n\t\t\t\t\t\t\t\tAND estatus_actual != 50 ";
     $rs = getRecordset($sql);
     while ($rw = mysql_fetch_array($rs)) {
         $socio = $rw["numero_socio"];
         $credito = $rw["numero_solicitud"];
         $saldo_actual = $rw["saldo_actual"];
         $letra = $rw["ultimo_periodo_afectado"] + 1;
         $fecha = sumardias($rw["fecha_ultimo_mvto"], $rw["periocidad_de_pago"]);
         $monto = $saldo_actual;
         $msg .= "{$socio}\t{$credito}\tAGREGAR\tUnica Letra por el SALDO de {$saldo_actual} \r\n";
         $sqlIS = "INSERT INTO sisbancs_amortizaciones(socio, credito, parcialidad, fecha_de_vencimiento,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsaldo_vigente, saldo_vencido, interes_vigente, interes_vencido, saldo_interes_vencido, interes_moratorio,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\testatus, iva_interes_normal, iva_interes_moratorio)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tVALUES ({$socio}, {$credito}, {$letra}, '{$fecha}',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{$saldo_actual}, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t1, 0, 0)";
         $cRec->setNuevoMvto($fecha, $monto, 410, $letra, "", 1, false, $socio, $credito);
         $x = my_query($sqlIS);
         if ($x["stat"] == false) {
             $msg .= "{$socio}\t{$credito}\tERROR\t   \r\n";
         }
     }
     $msg .= $cRec->getMessages("txt");
     return $msg;
 }
 *
 */
if (MODULO_SEGUIMIENTO_ACTIVADO == true) {
    $aliasFil = getSucursal() . "-eventos-al-cierre-de-seguimiento-del-dia-{$fechaop}";
    $xLog = new cFileLog($aliasFil);
    $idrecibo = DEFAULT_RECIBO;
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\t" . EACP_NAME . " \r\n";
    $messages .= "=========================\t\t" . getSucursal() . " \r\n";
    $messages .= "=======================================================================================\r\n";
    $messages .= "=========================\t\tINICIANDO EL CIERRE DE SEGUIMIENTO ====================\r\n";
    $messages .= "=========================\t\tRECIBO: {$idrecibo}\t\t\t\t   ====================\r\n";
    $messages .= "=========================\t\tFECHA: {$fechaop}\t\t\t\t\t   ====================\r\n";
    $messages .= "=======================================================================================\r\n";
    //Avisos
    $dia_siguiente = sumardias($fechaop, 1);
    $xAv = new cAlertasDelSistema($dia_siguiente);
    $messages .= $xAv->setGenerarAlCierre($dia_siguiente);
    $messages .= vencer_notificaciones();
    $messages .= vencer_llamadas();
    $messages .= vencer_compromisos();
    $xLlam = new cLlamada();
    $xLlam->setCancelarLlamadasAnteriores($fechaop);
    $messages .= setLlamadasDiariasCreditosNo360($fechaop, $idrecibo);
    $messages .= setLlamadasDiariasPorMora($fechaop, $idrecibo);
    $xLog->setWrite($messages);
    $xLog->setClose();
    if (ENVIAR_MAIL_LOGS == true) {
        $xLog->setSendToMail("TR.Eventos del Cierre del Seguimiento");
    }
}
function s_week($ignium)
{
    $aImgs = array();
    $aImgs["no_cumplido"] = "red_dot.png";
    $aImgs["cancelado"] = "black_dot.png";
    $aImgs["pendiente"] = "yellow_dot.png";
    $aImgs["cumplido"] = "green_dot.png";
    $aMsg = array();
    $aMsg["no_cumplido"] = "NO CUMPLIDO";
    $aMsg["cancelado"] = "CANCELADO";
    $aMsg["pendiente"] = "PENDIENTE";
    $aMsg["cumplido"] = "CUMPLIDO";
    $td = "";
    $th = "";
    $cls = "day_1";
    for ($i = 0; $i <= 6; $i++) {
        $dia = sumardias($ignium, $i);
        $ndia = dia_semana($dia);
        $ncdia = getFechaLarga($dia);
        $compro = "";
        $sqlob = "SELECT socios.codigo,\n\t\t\t\tsocios.nombre,\n\t\t\t\tseguimiento_compromisos.tipo_compromiso,\n\t\t\t\tseguimiento_compromisos.anotacion,\n\t\t\t\tseguimiento_compromisos.idseguimiento_compromisos AS 'id',\n\t\t\t\tseguimiento_compromisos.estatus_compromiso\n\t\t\t\tFROM socios, seguimiento_compromisos\n\t\t\t\tWHERE seguimiento_compromisos.socio_comprometido=socios.codigo\n\t\t\t\tAND seguimiento_compromisos.fecha_vencimiento='{$dia}'";
        $rs = mysql_query($sqlob);
        while ($rwc = mysql_fetch_array($rs)) {
            $imgestat = $aImgs[$rwc["estatus_compromiso"]];
            $msgt = $aMsg[$rwc["estatus_compromiso"]];
            $id = $rwc["id"];
            $tipo = str_replace("promesa_de_", "", $rwc["tipo_compromiso"]);
            $compro .= "\n\n\t\t\t\t<tr>\n\t\t\t\t<td  \tclass=\"strech\" id=\"c@{$id}\"\n\t\t\t\t\t\ttitle='{$msgt} [{$rwc['1']}]'\n\t\t\t\t\t\tonclick='show_compromiso(\"{$id}\");'><img alt=\"Estatus: {$rwc['5']} \" src=\"../images/seguimiento/{$imgestat}\" align=\"middle\" title='{$msgt} [{$rwc['1']}]' /> {$rwc['0']} - " . $tipo . "</td>\n\t\t\t\t</tr>";
        }
        @mysql_free_result($rs);
        //Agregar compromisos de pago
        $sqLetras = "SELECT\n\t\t\t\t`creditos_solicitud`.`numero_socio`,\n\t\t\t\t`socios`.`nombre`,\n\t\t\t\t`creditos_solicitud`.`tipo_convenio`,\n\t\t\t\t`letras`.`periodo_socio`,\n\t\t\t\t`letras`.`letra`,\n\t\t\t\t`letras`.`fecha_de_pago`\n\t\t\tFROM\n\t\t\t\t`letras` `letras` \n\t\t\t\t\tINNER JOIN `creditos_solicitud` `creditos_solicitud` \n\t\t\t\t\tON `letras`.`docto_afectado` = `creditos_solicitud`.`numero_solicitud` \n\t\t\t\t\t\tINNER JOIN `socios` `socios` \n\t\t\t\t\t\tON `creditos_solicitud`.`numero_socio` = `socios`.`codigo`\n\t\t\tWHERE \n\t\t\t`letras`.`fecha_de_pago` = '{$dia}'\n\t\t\tAND letra > 0\n\t\t\tAND ( `creditos_solicitud`.`tipo_convenio` = " . CREDITO_PRODUCTO_INDIVIDUAL . "\n\t\t\t\tOR\n\t\t\t`creditos_solicitud`.`tipo_convenio` = " . CREDITO_PRODUCTO_REVOLVENTES . " ) ";
        /*
        		$mql	= new MQL();
        		$select	= $mql->select();
        		$select->set($sqLetras);
        		$datos	= $select->exec();
        		
        		foreach($datos as $datos){
        			$socio		= $datos["numero_socio"];
        			$nombre		= $datos["nombre"];
        			$credito	= "";
        			$parcialidad	= $datos["periodo_socio"];
        			$letra		= getFMoney( $datos["letra"]);
        			
        			$compro .= "\n
        				<tr>
        				<td  	class=\"strech\" id=\"c@$id\"
        						title='$nombre'
        						onclick=''><img src=\"../images/bancos.png\" class=\"x16\" /> $socio $parcialidad - $letra </td>
        				</tr>";
        		}*/
        if ($cls == "day_1") {
            $cls = "day_2";
        } else {
            $cls = "day_1";
        }
        $td = $td . "\n <td class='{$cls}'>\n\t\t\t\t\t<table width='100%' aling=\"center\">\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"strech\" title='Compromisos del dia {$ncdia}'><center>\n\t\t\t\t\t\t\t<img src=\"../images/common/icon-new.png\" onclick='addCompromisos(\"0|0|{$dia}\");' alt='Agregar un Compromiso' />\n\t\t\t\t\t\t\t<img src=\"../images/common/stock_navigator-all-or-sel-toggle.png\" onclick='mostrar_un_dia(\"{$dia}\");' alt='Mostrar Compromisos' />\n\t\t\t\t\t\t\t{$ndia}\n\t\t\t\t\t\t\t</center></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$compro}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t\t</td>";
        //$th = $th . "<th class='compact'>$ncdia</th>";
    }
    return "<table class='calendar_day'\n\tcellpadding='2' cellspacing='2' border='2'>\n\t\t<tr>\n\t\t\t{$td}\n\t\t<tr>\n\t</table>";
}
        $FVenc = sumardias($FMora, DIAS_PAGO_VARIOS);
        if (!isset($FMora)) {
            $FMora = sumardias($fecha_ultimo_mvto, $periocidad + $periodo_en_desfase);
            $FVenc = sumardias($FMora, DIAS_PAGO_VARIOS);
            $en_mora = false;
        } else {
            $en_mora = true;
        }
        $letras_pagadas = ($saldo_historico - $saldo_actual) / ($saldo_historico / $pagos);
        $letras_pagadas = round($letras_pagadas, 0);
        $letras_pendientes = $saldo_actual / ($saldo_historico / $pagos);
        $letras_pendientes = round($letras_pendientes, 0);
        $letras_que_debio = round($dias_transcurridos / ($dias_autorizados / $pagos), 0);
    } else {
        $FMora = $rw["fecha_vencimiento"];
        $FVenc = sumardias($rw["fecha_vencimiento"], DIAS_PAGO_UNICOS);
        $en_mora = true;
    }
    //if ($en_mora == true){
    $dias_vencidos = restarfechas($fecha_de_reporte, $FMora);
    $trs .= "<tr>\r\n\t\t\t\t\t<td>{$socio}</td>\r\n\t\t\t\t\t<td>{$nombre}</td>\r\n\t\t\t\t\t<td>{$credito}</td>\r\n\t\t\t\t\t<td >{$periocidad}</td>\r\n\t\t\t\t\t<td class='mny'>{$pagos}</td>\r\n\t\t\t\t\t<td class='{$nombre_estatus}'>{$nombre_estatus}</td>\r\n\t\t\t\t\t<td>{$fecha_ministracion}</td>\r\n\t\t\t\t\t<td>{$fecha_ultimo_mvto}</td>\r\n\t\t\t\t\t<td>{$FMora}</td>\r\n\t\t\t\t\t<td>{$FVenc}</td>\r\n\r\n\t\t\t\t\t<td class='mny'>{$saldo_historico}</td>\r\n\t\t\t\t\t<td class='mny'>{$saldo_actual}</td>\r\n\t\t\t\t\t<td class='mny'>{$letras_pagadas}</td>\r\n\t\t\t\t\t<td class='mny'>{$letras_pendientes}</td>\r\n\t\t\t\t\t<td class='mny'>{$letras_que_debio}</td>\r\n\t\t\t\t\t<td>{$dias_vencidos}</td>\r\n\t\t\t\t</tr>";
    //}
}
echo "<table width='100%' border='0'>\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<th>Codigo</th>\r\n\t\t\t<th>Nombre</th>\r\n\t\t\t<th>#Credito</th>\r\n\t\t\t<th>Periocidad</th>\r\n\t\t\t<th>Num. Pagos</th>\r\n\t\t\t<th>Estatus</th>\r\n\t\t\t<th>Fecha de Ministracion</th>\r\n\t\t\t<th>Fecha de Ultima Op.</th>\r\n\t\t\t<th>Fecha de Mora</th>\r\n\t\t\t<th>Fecha de Vencimiento</th>\r\n\t\t\t<th>Monto Ministrado</th>\r\n\t\t\t<th>Saldo Insoluto</th>\r\n\t\t\t<th>Letras Pagadas</th>\r\n\t\t\t<th>Letras Pendientes</th>\r\n\t\t\t<th>Letras que debio pagar</th>\r\n\t\t\t<th>Dias Vencidos</th>\r\n\t\t</tr>\r\n\r\n\t\t{$trs}\r\n\t</tbody>\r\n</table>";
echo getRawFooter();
?>
</body>
<script  >
<?php 
?>
function initComponents(){
 $fecha_u_mvto = $fecha_solicitud;
 $dias_solicitados = 0;
 $monto_parcialidad = 0;
 $tipo_de_calculo_interes = 2;
 if (PERMITIR_EXTEMPORANEO == true) {
     $fecha_solicitud = $_POST["elanno98"] . "-" . $_POST["elmes98"] . "-" . $_POST["eldia98"];
 }
 //Si es a Final de Plazo
 if ($periocidad == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
     $dias_solicitados = restarfechas($fecha_vencimiento, $fecha_ministracion);
 } elseif ($periocidad == CREDITO_TIPO_PERIOCIDAD_DIARIO) {
     $dias_solicitados = restarfechas($fecha_vencimiento, $fecha_ministracion);
     $numeropagos = $dias_solicitados - $xFecha->getDiasHabilesEnRango($fecha_vencimiento, $fecha_ministracion);
 } else {
     $dias_solicitados = $numeropagos * $periocidad;
     $fecha_vencimiento = sumardias($fecha_ministracion, $dias_solicitados);
 }
 $dias_autorizados = 0;
 $monto_autorizado = 0;
 $pagos_autorizados = 0;
 $saldo_actual = 0;
 $xConv = new cProductoDeCredito($tipoconvenio);
 $dconv = $xConv->getDatosInArray();
 //Datos de los Creditos segun Productos
 $producto_monto_maximo = $dconv["maximo_otorgable"];
 $tipo_autorizacion = $dconv["tipo_autorizacion"];
 $docto_autorizacion = $dconv["leyenda_docto_autorizacion"];
 $interes_normal = $xConv->getTasaDeInteres();
 $interes_moratorio = $dconv["interes_moratorio"];
 $tipo_credito = $dconv["tipo_de_credito"];
 $estatus_pred = $dconv["estatus_predeterminado"];
function setLlamadasDiariasPorMora($fecha_operacion, $recibo = 0)
{
    $sucursal = getSucursal();
    $fecha = sumardias($fecha_operacion, DIAS_DE_ANTICIPACION_PARA_LLAMADAS);
    $msg = "====================== GENERAR_LLAMADAS_POR_CREDITOS_NO_360 \r\n";
    $msg .= "====================== GENERAR LLAMADAS POR CREDITOS MOROSOS_Y_VENCIDOS \r\n";
    $msg .= "====================== GENERAR LLAMADAS PARA EL " . getFechaLarga($fecha) . "\r\n";
    $msg .= "\tSocio\tCredito\tObservaciones\r\n";
    $sql = "SELECT\n\t`creditos_solicitud`.*\nFROM\n\t`creditos_solicitud` `creditos_solicitud`\nWHERE\n\t(\n\t\t(`creditos_solicitud`.`estatus_actual` =30)\n\t\tOR\n\t\t(`creditos_solicitud`.`estatus_actual` =20)\n\t)\n\tAND\n\t(`creditos_solicitud`.`sucursal` ='{$sucursal}')\n\tAND\n\t(`creditos_solicitud`.`saldo_actual` > " . TOLERANCIA_SALDOS . ")\n\tAND\n\t(`creditos_solicitud`.`periocidad_de_pago` != 360)\n\t";
    $fecha_operacion = sumardias($fecha_operacion, 1);
    //ma�ana
    $rs = mysql_query($sql, cnnGeneral());
    while ($rw = mysql_fetch_array($rs)) {
        $socio = $rw["numero_socio"];
        $credito = $rw["numero_solicitud"];
        $oficial = $rw["oficial_seguimiento"];
        $hora = "8:00";
        $txt = setNewLlamadaBySocio($socio, $credito, $fecha, $hora, "LLAMADAS DIARIAS AUTOMATICAS : {$recibo}");
        $msg .= date("H:i:s") . "\t" . $txt . "\r\n";
    }
    return $msg;
}