/**
  * Funcion que establece un estatus segun los criterios sobre politicas de creditos
  *
  * @param integer $recibo		//Numero numero de recibo al que se agregan los movimientos
  * @param date $fecha			//Fecha de Operacion
  * @param date $AppSucursal		//si Aplica para todas las sucursales
  * @return string $msg			//Mensages del LOG
  */
 function setEstatusDeCreditos($recibo, $fecha = false, $AppSucursal = true, $force_updates = false, $credito = false)
 {
     $fecha = $fecha == false ? fechasys() : $fecha;
     $cierre_sucursal = "";
     $credito = setNoMenorQueCero($credito);
     $ql = new MQL();
     $xLi = new cSQLListas();
     $xLog = new cCoreLog();
     if ($AppSucursal == true) {
         //$cierre_sucursal = "AND (`creditos_solicitud`.`sucursal`='" . getSucursal() . "')";
     }
     $xLog->add("==\t\t\tMODIFICACION_DE_ESTATUS_EN_CREDITOS\r\n", $xLog->DEVELOPER);
     if ($force_updates == true) {
         $xLog->add("==\tSe Actualizaran ESTADOS\r\n", $xLog->DEVELOPER);
     }
     $xRec = new cReciboDeOperacion(10);
     $tolerancia_en_pesos = TOLERANCIA_SALDOS;
     $ByCredito = $xLi->OFiltro()->CreditoPorClave($credito);
     $sqlH = "SELECT\n\t\t\t\t`historial_de_pagos`.* FROM\n\t\t\t`historial_de_pagos` `historial_de_pagos` INNER JOIN `creditos_solicitud` `creditos_solicitud` \n\t\t\t\tON `historial_de_pagos`.`credito` = `creditos_solicitud`.\n\t\t\t\t`numero_solicitud` WHERE (`creditos_solicitud`.`estatus_actual`!=50) {$cierre_sucursal} {$ByCredito} AND (`creditos_solicitud`.`saldo_actual`>{$tolerancia_en_pesos}) ORDER BY `creditos_solicitud`.`fecha_vencimiento` ";
     $rsPagos = $ql->getDataRecord($sqlH);
     $DPagos = array();
     foreach ($rsPagos as $rwpagos) {
         $id = $rwpagos["credito"];
         $DPagos[$id][] = $rwpagos;
     }
     $rsPagos = null;
     //setLog($sqlH);
     /*INICIALIZA EL RECIBO*/
     /** @since 2010-12-27 */
     $sql = $xLi->getInicialDeCreditos() . " WHERE (`creditos_solicitud`.`estatus_actual`!=50) {$cierre_sucursal} {$ByCredito} AND (`creditos_solicitud`.`saldo_actual`>{$tolerancia_en_pesos}) ORDER BY `creditos_solicitud`.`fecha_vencimiento` ";
     $rs = $ql->getDataRecord($sql);
     $xDD = new cCreditos_solicitud();
     foreach ($rs as $rw) {
         $xDD->setData($rw);
         $idcredito = $xDD->numero_solicitud()->v();
         $xCred = new cCredito($idcredito);
         $xCred->init($rw);
         $DPago = isset($DPagos[$idcredito]) ? $DPagos[$idcredito] : false;
         $xCred->setDetermineDatosDeEstatus($fecha, false, $force_updates, $DPago);
         $xLog->add($xCred->getMessages(), $xLog->DEVELOPER);
     }
     $DPagos = null;
     $this->mMessages .= $xLog->getMessages();
     return $xLog->getMessages();
 }
 */
$estatus = isset($_GET["f2"]) ? $_GET["f2"] : SYS_TODAS;
$frecuencia = isset($_GET["f1"]) ? $_GET["f1"] : SYS_TODAS;
$convenio = isset($_GET["f3"]) ? $_GET["f3"] : SYS_TODAS;
$estatus = isset($_GET["estado"]) ? $_GET["estado"] : $estatus;
$frecuencia = isset($_GET["periocidad"]) ? $_GET["periocidad"] : $frecuencia;
$frecuencia = isset($_GET["frecuencia"]) ? $_GET["frecuencia"] : $frecuencia;
$convenio = isset($_GET["convenio"]) ? $_GET["convenio"] : $convenio;
$empresa = isset($_GET["empresa"]) ? $_GET["empresa"] : SYS_TODAS;
$out = isset($_GET["out"]) ? $_GET["out"] : SYS_DEFAULT;
$es_por_estatus = "";
$BySaldo = " AND (creditos_solicitud.saldo_actual>=0.99) ";
if ($estatus == CREDITO_ESTADO_AUTORIZADO or $estatus == CREDITO_ESTADO_SOLICITADO) {
    $BySaldo = "";
}
$ByOficial = $xLi->OFiltro()->CreditosPorOficial(parametro("oficial", SYS_TODAS, MQL_INT));
$BySucursal = $xLi->OFiltro()->CreditosPorSucursal(parametro("sucursal", ""));
$ByEmpresa = $xLi->OFiltro()->CreditosPorEmpresa($empresa);
$es_por_frecuencia = $xLi->OFiltro()->CreditosPorFrecuencia($frecuencia);
$es_por_convenio = $xLi->OFiltro()->CreditosPorProducto($convenio);
$es_por_estatus = $xLi->OFiltro()->CreditosPorEstado($estatus);
/* ***************************************************************************** */
if ($out == OUT_EXCEL) {
} else {
    echo $xHP->getHeader();
    echo $xHP->setBodyinit("initComponents();");
    echo getRawHeader();
    $xRpt = new cReportes();
    echo $xRpt->getEncabezado($xHP->getTitle());
}
$sql = "SELECT\n\t`socios`.`codigo`,\n\t`socios`.`nombre`,\n\t`creditos_solicitud`.`numero_solicitud`,\n\tsaldo,\n\tdias_morosos,\n\tdias_vencidos,\n\t\t\n\t(CASE WHEN ( (dias_vencidos + dias_morosos) <=0) THEN ( saldo ) ELSE 0 END) AS 'sin_mora',\n\t \n\t(CASE WHEN ( (dias_morosos >=1 AND dias_morosos <=7)) THEN (saldo) ELSE 0 END) AS 'moroso_7_dias',\n\t(CASE WHEN ( (dias_morosos >=8 AND dias_morosos <=15)) THEN (saldo) ELSE 0 END) AS 'moroso_15_dias',\n\t(CASE WHEN ( (dias_morosos >=16 AND dias_morosos <=30)) THEN (saldo) ELSE 0 END) AS 'moroso_30_dias',\n\t(CASE WHEN ( (dias_morosos >=31 AND dias_morosos <=60)) THEN (saldo) ELSE 0 END) AS 'moroso_60_dias',\n\t(CASE WHEN ( (dias_morosos >=61 AND dias_morosos <=90)) THEN (saldo) ELSE 0 END) AS 'moroso_90_dias',\n\t(CASE WHEN ( (dias_morosos >=91 AND dias_morosos <=120)) THEN (saldo) ELSE 0 END) AS 'moroso_120_dias',\n\t(CASE WHEN ( (dias_morosos >=121 AND dias_morosos <=180)) THEN (saldo) ELSE 0 END) AS 'moroso_180_dias',\n\t(CASE WHEN ( (dias_morosos >=181)) THEN (saldo) ELSE 0 END) AS 'moroso_mayor',\n\t \n\t(CASE WHEN ( (dias_vencidos >=1 AND dias_vencidos <=7)) THEN (saldo) ELSE 0 END) AS 'vencido_7_dias',\n\t(CASE WHEN ( (dias_vencidos >=8 AND dias_vencidos <=15)) THEN (saldo) ELSE 0 END) AS 'vencido_15_dias',\n\t(CASE WHEN ( (dias_vencidos >=16 AND dias_vencidos <=30)) THEN (saldo) ELSE 0 END) AS 'vencido_30_dias',\n\t(CASE WHEN ( (dias_vencidos >=31 AND dias_vencidos <=60)) THEN (saldo) ELSE 0 END) AS 'vencido_60_dias',\n\t(CASE WHEN ( (dias_vencidos >=61 AND dias_vencidos <=90)) THEN (saldo) ELSE 0 END) AS 'vencido_90_dias',\n\t(CASE WHEN ( (dias_vencidos >=91 AND dias_vencidos <=120)) THEN (saldo) ELSE 0 END) AS 'vencido_120_dias',\n\t(CASE WHEN ( (dias_vencidos >=121 AND dias_vencidos <=180)) THEN (saldo) ELSE 0 END) AS 'vencido_180_dias',\n\t(CASE WHEN ( (dias_vencidos >=181)) THEN (saldo) ELSE 0 END) AS 'vencido_mayor'\n\t \n\t FROM\n\t`creditos_solicitud` `creditos_solicitud` \n\t\tINNER JOIN `dias_en_mora` `dias_en_mora` \n\t\tON `creditos_solicitud`.`numero_solicitud` = `dias_en_mora`.\n\t\t`numero_solicitud` \n\t\t\tINNER JOIN `socios` `socios` \n\t\t\tON `creditos_solicitud`.`numero_socio` = `socios`.`codigo`\n\t WHERE \n\t\tsaldo > " . TOLERANCIA_SALDOS . "\n\t\t\t\tAND dias_morosos >=1\n\t\t{$es_por_convenio}\n\t\t{$es_por_frecuencia}\n\t\t{$es_por_estatus}\n\t\t{$ByOficial}\n\t\t{$BySucursal}\n\t\t{$ByEmpresa}\n\t\t/*Disable castigados*/\n\t\tAND `creditos_solicitud`.`estatus_actual` != " . CREDITO_ESTADO_CASTIGADO . "\n\t ORDER BY dias_morosos DESC\n\t";
//=====================================================================================================
$periocidad = parametro("f1", SYS_TODAS);
$periocidad = parametro("periocidad", $periocidad);
$periocidad = parametro("frecuencia", $periocidad);
$estado = parametro("estado", SYS_TODAS);
$estado = parametro("estatus", $estado);
$producto = parametro("convenio", SYS_TODAS);
$producto = parametro("producto", $producto);
$fechaInicial = parametro("on", EACP_FECHA_DE_CONSTITUCION);
$fechaFinal = parametro("off", fechasys());
$fechaInicial = $xF->getFechaISO($fechaInicial);
$fechaFinal = $xF->getFechaISO($fechaFinal);
$formato = parametro("out", SYS_DEFAULT, MQL_RAW);
$sucursal = parametro("sucursal", SYS_TODAS, MQL_RAW);
$xRPT = new cReportes($xHP->getTitle());
$ByProducto = $xLi->OFiltro()->CreditosPorProducto($producto);
$BySucursal = $xLi->OFiltro()->CreditosPorSucursal($sucursal);
$sql = "\nSELECT\n\t`creditos_solicitud`.`sucursal`,\n\t`creditos_solicitud`.`numero_socio`       AS `persona`,\n\t`socios`.`nombre`,\n\t\n\t`creditos_solicitud`.`numero_solicitud`   AS `credito`,\n\t`creditos_solicitud`.`monto_autorizado`   AS `monto`,\n\t`creditos_solicitud`.`fecha_ministracion` AS `fecha` ,\n\tCOUNT(`operaciones_mvtos`.`tipo_operacion`) AS `operaciones`,\n\tMAX(`operaciones_mvtos`.`fecha_afectacion`) AS `fecha`,\n\tSUM(\n\tIF(`operaciones_mvtos`.`tipo_operacion` = 120,\t`operaciones_mvtos`.`afectacion_real`, 0\t)\n\t)  AS `abonos`,\n\t(`creditos_solicitud`.`monto_autorizado`  - \tSUM(\n\tIF(`operaciones_mvtos`.`tipo_operacion` = 120,\t`operaciones_mvtos`.`afectacion_real`, 0\t)\n\t)) AS 'saldo'\nFROM\n\t`operaciones_mvtos` `operaciones_mvtos` \n\t\tRIGHT OUTER JOIN `creditos_solicitud` `creditos_solicitud` \n\t\tON `operaciones_mvtos`.`docto_afectado` = `creditos_solicitud`.\n\t\t`numero_solicitud` \n\t\t\tINNER JOIN `socios` `socios` \n\t\t\tON `creditos_solicitud`.`numero_socio` = `socios`.`codigo`\n\t\t\t\nWHERE\n\t(\n\t(`operaciones_mvtos`.`tipo_operacion` =120) \n\tOR\n\t(`operaciones_mvtos`.`tipo_operacion` =110))\n\tAND\n\t(`operaciones_mvtos`.`fecha_afectacion` <= '{$fechaFinal}') \n\t{$ByProducto} {$BySucursal}\nGROUP BY\n\t`operaciones_mvtos`.`docto_afectado`\n\t\nHAVING saldo > 0\n\nORDER BY `creditos_solicitud`.`fecha_ministracion` ";
//$sql				= "CALL sp_saldos_al_cierre('$fechaFinal')";
//exit($sql);
$xTbl = new cTabla($sql);
$xTbl->setFootSum(array(4 => "monto", 8 => "abonos", 9 => "saldo"));
/*$xTbl->setFootSum(array(
	3 => "monto_autorizado",
		52 => "abonos",
		53 => "saldo"
));*/
$xRPT->setSQL($xTbl->getSQL());
$xTbl->setTipoSalida($formato);
$xRPT->setOut($formato);
$xRPT->addContent($xTbl->Show());
//=====================================================================================================
/**
 * Filtrar si Existe Caja Local
 */
$estatus = isset($_GET["f2"]) ? $_GET["f2"] : SYS_TODAS;
$frecuencia = isset($_GET["f1"]) ? $_GET["f1"] : SYS_TODAS;
$convenio = isset($_GET["f3"]) ? $_GET["f3"] : SYS_TODAS;
$estatus = isset($_GET["estado"]) ? $_GET["estado"] : $estatus;
$frecuencia = isset($_GET["periocidad"]) ? $_GET["periocidad"] : $frecuencia;
$frecuencia = isset($_GET["frecuencia"]) ? $_GET["frecuencia"] : $frecuencia;
$convenio = isset($_GET["convenio"]) ? $_GET["convenio"] : $convenio;
$convenio = isset($_GET["producto"]) ? $_GET["producto"] : $convenio;
$empresa = isset($_GET["empresa"]) ? $_GET["empresa"] : SYS_TODAS;
$out = parametro("out", SYS_DEFAULT, MQL_RAW);
$tipoautorizacion = parametro("tipoautorizacion", SYS_TODAS, MQL_INT);
$ByOficial = $xLi->OFiltro()->CreditosPorOficial(parametro("oficial", SYS_TODAS, MQL_INT));
$BySucursal = $xLi->OFiltro()->CreditosPorSucursal(parametro("sucursal", ""));
$es_por_estatus = $xLi->OFiltro()->CreditosPorEstado($estatus);
$BySaldo = $xLi->OFiltro()->CreditosPorSaldos("0.99", ">=");
$ByEmpresa = $xLi->OFiltro()->CreditosPorEmpresa($empresa);
$ByTipoAut = $xLi->OFiltro()->CreditosPorAutorizacion($tipoautorizacion);
$fechaInicial = $xF->getFechaISO(parametro("on", fechasys()));
$fechaFinal = $xF->getFechaISO(parametro("off", fechasys()));
if ($estatus == CREDITO_ESTADO_AUTORIZADO or $estatus == CREDITO_ESTADO_SOLICITADO) {
    $BySaldo = "";
}
$es_por_frecuencia = $xLi->OFiltro()->CreditosPorFrecuencia($frecuencia);
$es_por_convenio = $xLi->OFiltro()->CreditosPorProducto($convenio);
$ByFecha = " AND (creditos_solicitud.fecha_ministracion >='{$fechaInicial}' AND creditos_solicitud.fecha_ministracion <= '{$fechaFinal}') ";
/* ******************************************************************************/
$OperadorFecha = $out == OUT_EXCEL ? " " : "getFechaMX";