/**
  * Funcion que Retorna una Ficha Descriptiva por el recibo
  * @param boolean $fieldset
  * @param string $trTool
  * @param string $wTable
  * @return string
  */
 function getFicha($fieldset = false, $trTool = "", $extend = false)
 {
     $this->init();
     $xLg = new cLang();
     $personaAsoc = $this->getPersonaAsociada();
     //$fichaEmpresa	= "";
     if ($this->mReciboIniciado == false) {
         $exoFicha = "<div class='error'>" . $xLg->get(MSG_NO_DATA) . "</div>";
     } else {
         $xLg = new cLang();
         $tool = $trTool;
         if ($extend == true) {
             $xUsr = new cSystemUser($this->getCodigoDeUsuario());
             $xUsr->init();
             $xSoc = new cSocio($this->getCodigoDeSocio());
             $xSoc->init();
             $tool .= "<tr><th class='izq'>" . $xLg->getT("TR.persona") . "</th>";
             $tool .= "<td>" . $xSoc->getNombreCompleto() . "</td>";
             $tool .= "<th class='izq'>" . $xLg->getT("TR.Documento") . "</th>";
             $tool .= "<td>" . $this->getCodigoDeDocumento() . "</td>";
             $tool .= "<tr><th class='izq'>" . $xLg->getT("TR.Elabora") . "</th>";
             $tool .= "<td>" . $xUsr->getNombreCompleto() . "</td>";
             if ($this->isDeEmpresa() == true) {
                 $xEmp = new cEmpresas($personaAsoc);
                 $xEmp->init();
                 $tool .= "<th class='izq'>" . $xLg->getT("TR.Empresa") . "</th>";
                 $tool .= "<td>" . $xEmp->getNombre() . "</td>";
             }
             $tool .= "</tr>";
         }
         if ($this->isDivisaExtranjera() == true) {
             $tool .= "<tr><th class='izq'>" . $xLg->getT("TR.Moneda") . "</th>";
             $tool .= "<td>" . $this->getMoneda() . "</td>";
             $tool .= "<th class='izq'>" . $xLg->getT("TR.Original") . "</th>";
             $tool .= "<td>" . $this->getUnidadesOriginales() . "</td>";
             $tool .= "</tr>";
         }
         $xF = new cFecha(0);
         $exoFicha = "\n\t\t\t\t<table id=\"ficharecibo\">\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th class='izq'>Numero de Recibo</th>\n\t\t\t\t\t\t<td class='mny'>" . $this->mCodigoDeRecibo . "</td>\n\t\t\t\t\t\t<th class='izq'>Tipo de Recibo</th>\n\t\t\t\t\t\t<td>" . $this->mTipoDescripcion . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th class='izq'>Fecha de Recibo</th>\n\t\t\t\t\t\t<td>" . $xF->getFechaCorta($this->mFechaDeOperacion) . "</td>\n\t\t\t\t\t\t<th class='izq'>Recibo Fiscal</th>\n\t\t\t\t\t\t<td>" . $this->mReciboFiscal . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th class='izq'>Tipo de Pago</th>\n\t\t\t\t\t\t<td>" . strtoupper($this->mTipoDePago) . "</td>\n\t\t\t\t\t\t<th class='izq'>Total</th>\n\t\t\t\t\t\t<td>" . getFMoney($this->mTotalRecibo) . "</td>\n\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t{$tool}\n\t\t\t\t</tbody>\n\t\t\t\t</table>";
         if ($fieldset == true) {
             $exoFicha = "<fieldset>\n\t\t\t\t\t\t\t\t<legend>&nbsp;&nbsp;INFORMACI&Oacute;N DEL RECIBO&nbsp;&nbsp;</legend>\n\t\t\t\t\t\t\t\t{$exoFicha}\n\t\t\t\t\t\t\t</fieldset>";
         }
     }
     return $exoFicha;
 }
 function setPolizaPorRecibo($recibo, $generador = false)
 {
     $sucess = false;
     $QL = new MQL();
     $xLogg = new cCoreLog();
     //$arrEquivEfvo			=
     //if (GENERAR_CONTABILIDAD == true){
     $xLogg->add("=======\tGENERAR POLIZA POR RECIBO NUM {$recibo}\r\n", $xLogg->DEVELOPER);
     $xT = new cCatalogoOperacionesDeCaja();
     $centro_de_costo = DEFAULT_CENTRO_DE_COSTO;
     //($generador == GENERAR_POLIZAS_AL_CIERRE) AND
     if (setNoMenorQueCero($recibo) > 0) {
         $xRec = new cReciboDeOperacion(false, false, $recibo);
         if ($xRec->init() == true) {
             $sucess = true;
             //Obten datos del recibo para la Poliza
             $sqlRec = "SELECT\r\n\t\t\t\t\t\t\t`operaciones_recibos`.*,\r\n\t\t\t\t\t\t\t`operaciones_recibostipo`.`tipo_poliza_generada`,\r\n\t\t\t\t\t\t`operaciones_recibostipo`.`afectacion_en_flujo_efvo`\r\n\t\t\t\t\t\tFROM\r\n\t\t\t\t\t\t\t`operaciones_recibos` `operaciones_recibos`\r\n\t\t\t\t\t\t\t\tINNER JOIN `operaciones_recibostipo`\r\n\t\t\t\t\t\t\t\t`operaciones_recibostipo`\r\n\t\t\t\t\t\t\t\tON `operaciones_recibos`.`tipo_docto` =\r\n\t\t\t\t\t\t\t\t`operaciones_recibostipo`.\r\n\t\t\t\t\t\t\t\t`idoperaciones_recibostipo`\r\n\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t(`operaciones_recibos`.`idoperaciones_recibos` = {$recibo})\r\n\t\t\t\t\t\tLIMIT 0,1 ";
             $dRec = obten_filas($sqlRec);
             $tipo_de_pago = $xRec->getTipoDePago();
             //Corrige los cargos de la PolizaS
             $total_poliza = 0;
             $SQLSumCargos = "SELECT SUM(monto) AS 'total' FROM contable_polizas_proforma\r\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE contable_operacion = '" . TM_CARGO . "'\r\n\t\t\t\t\t\t\t\t\t\t\t\tAND numero_de_recibo={$recibo} ";
             $TMPCargos = mifila($SQLSumCargos, "total");
             $SQLSumAbonos = "SELECT SUM(monto) AS 'total' FROM contable_polizas_proforma\r\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE contable_operacion = '" . TM_ABONO . "'\r\n\t\t\t\t\t\t\t\t\t\t\t\tAND numero_de_recibo={$recibo} ";
             $TMPAbonos = mifila($SQLSumAbonos, "total");
             if ($TMPCargos > $TMPAbonos) {
                 $diferencia = $TMPAbonos - $TMPCargos;
                 $diferencia = $diferencia < 0 ? $diferencia * -1 : $diferencia;
                 $total_poliza = $TMPCargos;
                 setPolizaProforma($recibo, $xT->getTipoOperacionByTipoPago($tipo_de_pago), $diferencia, 1, 1, TM_ABONO);
                 $xLogg->add("OK\tCUADRAR\tABONO\tOperacion Agregada por DESCUADRE en {$tipo_de_pago} por {$diferencia}\r\n", $xLogg->DEVELOPER);
                 //$xLogg->add( , $xLogg->DEVELOPER);
             } elseif ($TMPCargos < $TMPAbonos) {
                 $diferencia = $TMPCargos - $TMPAbonos;
                 $diferencia = $diferencia < 0 ? $diferencia * -1 : $diferencia;
                 $total_poliza = $TMPAbonos;
                 setPolizaProforma($recibo, $xT->getTipoOperacionByTipoPago($tipo_de_pago), $diferencia, 1, 1, TM_CARGO);
                 $xLogg->add("OK\tCUADRAR\tCARGOS\tOperacion Agregada por DESCUADRE en {$tipo_de_pago} por {$diferencia}\r\n", $xLogg->DEVELOPER);
             } else {
                 $total_poliza = $TMPCargos;
             }
             //tipos de Poliza 1=ingreso, 2=egreso, 3 Diario, 4=orden 5
             $xD = new cFecha(0, $xRec->getFechaDeRecibo());
             $numero_de_recibo = $recibo;
             $tipo_de_poliza = $xRec->getOTipoRecibo()->getTipoPolizaContable();
             $fecha_de_poliza = $xRec->getFechaDeRecibo();
             $ejercicio_de_poliza = $xD->anno();
             $periodo_de_poliza = $xD->mes();
             $recibo_fiscal = strlen($xRec->getReciboFiscal()) > 2 ? ";RF:" . $xRec->getReciboFiscal() : "";
             $observacion_recibo = $xRec->getObservaciones();
             $cheque = strlen($xRec->getNumeroDeCheque()) > 2 ? ";Ch:" . $xRec->getNumeroDeCheque() : "";
             $concepto_poliza = substr("R:" . $numero_de_recibo . $recibo_fiscal . $cheque . ";" . $xRec->getObservaciones(), 0, 80);
             $flujo_efectivo = $xRec->getOTipoRecibo()->getAfectacionEnEfvo();
             $socio = $xRec->getCodigoDeSocio();
             $propietario = $xRec->getCodigoDeUsuario();
             $xLogg->add("=====\tRECIBO TIPO: " . $xRec->getTipoDeRecibo() . " SUMA: " . $xRec->getTotal() . " \r\n", $xLogg->DEVELOPER);
             //------------------ Agregar Poliza
             $xPol = new cPoliza($tipo_de_poliza, false, $ejercicio_de_poliza, $periodo_de_poliza);
             $xPol->add($concepto_poliza, $fecha_de_poliza, false, 0, 0, $propietario, $centro_de_costo, $recibo);
             $numero_de_poliza = $xPol->get();
             $xLogg->add("=====\tPOLIZA NUM: {$numero_de_poliza} | TIPO: {$tipo_de_poliza} | EJERCICIO: {$ejercicio_de_poliza} | PERIODO: {$periodo_de_poliza}\r\n", $xLogg->DEVELOPER);
             $sucess = $xPol->mRaiseError == true ? false : true;
             //------------------ Leer la PROFORMA
             $sqlMvtosToPoliza = "SELECT\r\n\t\t\t\t\t`contable_polizas_proforma`.*,\r\n\t\t\t\t\t`operaciones_tipos`.*\r\n\t\t\r\n\t\t\t\t\tFROM\r\n\t\t\t\t\t`operaciones_tipos` `operaciones_tipos`\r\n\t\t\t\t\t\tINNER JOIN `contable_polizas_proforma`\r\n\t\t\t\t\t\t`contable_polizas_proforma`\r\n\t\t\t\t\t\tON `operaciones_tipos`.`idoperaciones_tipos` =\r\n\t\t\t\t\t\t`contable_polizas_proforma`.`tipo_de_mvto`\r\n\t\t\t\t\t\tAND `contable_polizas_proforma`.`numero_de_recibo` = {$numero_de_recibo}\r\n\t\t\t\t\tORDER BY\r\n\t\t\t\t\t\t`contable_polizas_proforma`.`contable_operacion` DESC,\r\n\t\t\t\t\t\t`contable_polizas_proforma`.`socio`,\r\n\t\t\t\t\t\t`contable_polizas_proforma`.`tipo_de_mvto`\t\t\t\t\r\n\t\t\t\t\t";
             if ($sucess == true) {
                 $rs = $QL->getDataRecord($sqlMvtosToPoliza);
                 foreach ($rs as $rw) {
                     $cuenta = CUENTA_DE_CUADRE;
                     $nombre = "";
                     $socio = $rw["socio"];
                     if (CONTABLE_CUENTAS_POR_SOCIO == true) {
                         $xSoc = new cSocio($socio, true);
                         $nombre = $xSoc->getNombreCompleto();
                     }
                     $documento = $rw["documento"];
                     $monto_movimiento = $rw["monto"];
                     $tipoOp = $rw["tipo_de_mvto"];
                     $tipo_movimiento = $rw["contable_operacion"];
                     $RecUsr = $rw["idusuario"];
                     $cuenta_bancaria = $rw["banco"];
                     $cargo_movimiento = 0;
                     $abono_movimiento = 0;
                     if ($tipo_movimiento == TM_CARGO) {
                         $cargo_movimiento = $monto_movimiento;
                         $abono_movimiento = 0;
                     } else {
                         $cargo_movimiento = 0;
                         $abono_movimiento = $monto_movimiento;
                     }
                     $formula = $rw["cuenta_contable"];
                     //Corregir de urgencia: OK: 06Oct2011
                     $sForms = new cValorarFormulas();
                     $cuenta = $sForms->getCuentaContable($socio, $documento, $formula, $RecUsr, $xRec->getNumeroDeCheque(), $cuenta_bancaria);
                     $xLogg->add($sForms->getMessages(), $xLogg->DEVELOPER);
                     //tipo de cuenta es Abonos a efectivo
                     if ($cuenta != "NO_CONTABILIZAR") {
                         $xCuenta = new cCuentaContable($cuenta);
                         $xCuenta->init();
                         $cuenta = $xCuenta->get();
                         //Carga los datos del Oficial
                         if ($xCuenta->getEsCuentaDeCirculante() == true) {
                             $xOf = new cSystemUser($RecUsr);
                             $xOf->init();
                             $nombre = $xOf->getNombreCompleto();
                             $xLogg->add("OK\tCUENTA_ADD\tLa Cuenta {$cuenta} de Carga por Usuario [ {$nombre} ]\r\n", $xLogg->DEVELOPER);
                         } else {
                             $xLogg->add("OK\tCUENTA\tLa Cuenta de Trabajo es {$cuenta} Originado del Socio {$socio}\r\n", $xLogg->DEVELOPER);
                         }
                         //verifica para dar de alta a la cuenta
                         $Existentes = $xCuenta->getCountCuenta();
                         if ($Existentes == false) {
                             $xLogg->add("WARN\tCUENTA_ADD\tLa Cuenta de Trabajo {$cuenta} NO EXISTE, se AGREGA\r\n", $xLogg->DEVELOPER);
                             $cuenta = $xCuenta->add($nombre);
                             if ($xCuenta->mRaiseError == true) {
                                 //$msg				.= "ERROR\tLa Cuenta de Trabajo $cuenta NO EXISTE\r\n";
                                 //$msg		= $xCuenta->getMessages();
                             }
                         }
                         $xCuenta->init();
                         $xPol->addMovimiento($cuenta, $cargo_movimiento, $abono_movimiento, "{$socio}", "{$documento}:{$tipoOp}", false, $fecha_de_poliza);
                         //$xLogg->add("WARN\tNO_CONT\tAGREGAR $cuenta, $cargo_movimiento, $abono_movimiento\r\n" , $xLogg->DEVELOPER);
                         $xLogg->add($xCuenta->getMessages(), $xLogg->DEVELOPER);
                     } else {
                         $xLogg->add("WARN\tNO_CONT\tEl Movimiento de {$socio} | {$documento} | {$tipoOp} de Monto {$monto_movimiento} se OMITE\r\n", $xLogg->DEVELOPER);
                     }
                 }
                 $xPol->setFinalizar();
             }
             //sucess
             $xLogg->add($xPol->getMessages(), $xLogg->DEVELOPER);
             $this->mIDDePoliza = $xPol->getCodigo();
         }
     }
     //END VALUE.- GENERAR AL FINAL
     //}		//END VALUE.- GENERAR CONTABILIDAD
     $this->mMessages .= $xLogg->getMessages();
     return $xLogg->getMessages();
 }
        }
    } else {
        $eventOnLoad = "window.print();";
    }
}
echo $xHP->setBodyinit($eventOnLoad);
echo $scripts;
//pegar script como variable, eventonload
//<----------------------------------------------------------
$variable_numero_de_recibo = $recibo;
$variable_monto_del_recibo = number_format($totaloperacion, 2, '.', ',');
$variable_monto_del_recibo_en_letras = convertirletras($totaloperacion);
$variable_fecha_del_recibo = "";
$variable_tipo_de_pago = "";
$xCajero = new cSystemUser($DRec["idusuario"]);
$variable_nombre_del_cajero = $xCajero->getNombreCompleto();
$variable_observacion_del_recibo = $DRec["observacion_recibo"];
$variable_datos_de_pago = $xRec->getDatosDeCobro();
$xSuc = new cSucursal($DRec["sucursal"]);
$xSuc->init();
$DSuc = $xSuc->getDatosInArray();
$variable_lugar = $DSuc["municipio"] . ", " . $DSuc["estado"];
$variable_marca_de_tiempo = date("Ymd:His");
$tipoDocto = "";
$estatDocto = "";
$letras = "";
/* -----------------Verifica si es solicitud, si es imprime el saldo actual */
if ($origen == TESORERIA_RECIBOS_ORIGEN_CRED or $origen == TESORERIA_RECIBOS_ORIGEN_MIXTO) {
    $DD = $xRec->getInfoDoctoInArray();
    if ($DD != false and is_array($DD)) {
        $sdoctacred = $DD["saldo_actual"];
 function setUsuario($usuario = false)
 {
     $usuario = $usuario == false ? getUsuarioActual() : $usuario;
     $Usr = new cSystemUser($usuario);
     $this->mArr["variable_nombre_del_cajero"] = $Usr->getNombreCompleto();
     $this->mArr["variable_oficial"] = $Usr->getNombreCompleto();
     $this->mArr["variable_testigo_del_acto"] = $Usr->getNombreCompleto();
 }
    $xFRM->OButton("TR.Actualizar", "jsaActualizarIdioma()", $xFRM->ic()->EJECUTAR);
}
$cTbl = new cTabla($xLi->getListadoDeTareas(getUsuarioActual()));
$cTbl->setKeyField("idusuarios_web_notas");
$cTbl->setKeyTable("usuarios_web_notas");
$cTbl->OButton("TR.Checado", "setUpdateEstatus(_REPLACE_ID_)", $cTbl->ODicIcons()->OK);
$alerts .= $cTbl->Show("TR.Tareas");
$xFRM->OButton("TR.Salir", "var xG = new Gen(); xG.salir()", "salir");
$xFRM->addSeccion("idmastareas", "TR.Tareas");
$xFRM->addHElem("<div id=\"tcalendar-task\">{$alerts}</div>");
$xFRM->endSeccion();
$sysinfo = "";
if (MODO_DEBUG == true and SYSTEM_ON_HOSTING == false) {
    $xUL = new cHUl();
    $xUL2 = new cHUl();
    $sysinfo = $xUL->li("Base de Datos:" . MY_DB_IN)->li("Servidor: " . WORK_HOST)->li("Sucursal: " . getSucursal())->li("Version S.A.F.E.: " . SAFE_VERSION)->li("Revision S.A.F.E: " . SAFE_REVISION)->li("Path Temporal: " . PATH_TMP)->li("Path Backups: " . PATH_BACKUPS)->li("Fecha del Sistema: " . date("Y-m-d H:i:s"))->li("Usuario Activo: " . $xUsr->getNombreCompleto())->li("ID de Usuario: " . $xUsr->getID())->li("Nivel de Usuario: " . $xUsr->getNivel())->li("SAFE DB version : " . SAFE_DB_VERSION)->end();
    $sysinfo2 = $xUL2->li("Caja Local : " . $xLoc->getCajaLocal())->li("Localidad : " . $xLoc->DomicilioLocalidad())->li("Clave Localidad : " . $xLoc->DomicilioLocalidadClave())->li("Municipio : " . $xLoc->DomicilioMunicipio())->li("Estado : " . $xLoc->DomicilioEstado())->li("Clave Estado : " . $xLoc->DomicilioEstadoClaveABC())->li("C.P. : " . $xLoc->DomicilioCodigoPostal())->end();
    $xFRM->addSeccion("idmaslogs", "TR.Sistema");
    $xFRM->addDivSolo($sysinfo, $sysinfo2, "tx24", "tx24");
    $xFRM->endSeccion();
}
if (getUsuarioActual(SYS_USER_NIVEL) == USUARIO_TIPO_CAJERO) {
    $xNot = new cHNotif();
    $xCaja = new cCaja();
    if ($xCaja->getEstatus() == TESORERIA_CAJA_CERRADA) {
        $xNot->get("", "idestadocaja", $xNot->ERROR);
    } else {
    }
}
$xFRM->addAviso("", "idavisos");
$xFRM->OHidden("id-KeyEditable", "", "");
if (isset($_REQUEST["fechaMX"])) {
    $fecha_inicial = $xF->getFechaISO($_REQUEST["fechaMX"]);
    $fecha_final = $xF->getFechaISO($_REQUEST["fechaMX"]);
}
if (count($mails) <= 0) {
    if (MODULO_CAJA_ACTIVADO == true) {
        if ($xF->getInt($fecha_final) > $xF->getInt(fechasys())) {
            if ($xCaja->getEstatus() == TESORERIA_CAJA_ABIERTA) {
                $xHP->goToPageError(70102);
            }
        }
    }
}
$xUsr = new cSystemUser($cajero);
$xUsr->init();
$nombre = $xUsr->getNombreCompleto();
$ByDependencia = (isset($_GET["dependencia"]) and $_GET["dependencia"] != SYS_TODAS) ? " AND `socios`.`iddependencia`=" . $_GET["dependencia"] : "";
$xRPT = new cReportes();
$title = $xHP->getTitle();
$xRPT->setTitle($title);
$xRPT->setOut($out);
$xRPT->setSenders($mails);
$bheader = $xRPT->getHInicial($xHP->getTitle(), $fecha_inicial, $fecha_final, $nombre);
$xRPT->addContent($bheader);
$xRPT->setBodyMail($bheader);
$xRPT->setResponse();
$xRPT->addContent($xCaja->getResumenDeCaja());
//setlog( $xCaja->getMessages() );
if (count($mails) > 0) {
    if ($xCaja->getSumaDeRecibos() <= 0) {
        $xRPT->setSenders(array());
}
$xFRM->addHTML("<p class='aviso'>" . $xColonia->getMessages(OUT_HTML) . "</p>");
$xFRM->addHTML("<h3>DATOS FISCALES</h3>");
$xFRM->addHTML("<p class='aviso'>RFC evaluado : " . $xSoc->getRFC(true) . "</p>");
$xFRM->addHTML("<p class='aviso'>RFC evaluado/ret: " . $xSoc->getRFC(true, true) . "</p>");
$xFRM->addHTML("<p class='aviso'>RFC : " . $xSoc->getRFC() . "</p>");
//Iniciar por CURP
if ($xSoc->initByIDLegal("RACD-890730- KC3") == true) {
    $xFRM->addHElem("<p>El Nombre es por CURP ES " . $xSoc->getNombreCompleto() . "</p>");
    $xID = new cIDLegal($xSoc->getCURP());
    $xFRM->addHElem("<p>La fecha por CURP es " . $xID->getFechaCreacion() . "</p>");
}
$xLoc = new cDomicilioLocalidad(false);
$xLoc->setBuscar("MERXICA", 4, 1, "MX");
$xFRM->addAviso($xLoc->getNombre());
//$xC		= new cSocios_general();
/*$query		= $xC->query()->select();
$query->where("codigo > 0");
$rs	= $query->exec();
foreach ($rs as $rows){
	$xC->setData($rows);
	echo $xC->nombrecompleto()->v();
}*/
$xFRM->addHElem("<hr />");
$xUS = new cSystemUser(TASK_USR, false);
$xUS->init();
$xFRM->addHElem("<p class='aviso'>USER SYSTEM: " . $xUS->getNombreCompleto() . "</p>");
echo $xFRM->get();
echo $xP->setBodyEnd();
echo $xP->end();
//=====================================================================================================
 function getNombreUsuario()
 {
     $xUsr = new cSystemUser();
     return $xUsr->getNombreCompleto();
 }