¿A dónde se fue el reloj (y el calendario) en Ubuntu 14.04?

Download PDF

Recién me acabo de percatar que el Ubuntu que uso (14.04 LTS) NO está mostrando el reloj y la fecha, como siempre veo es mi móvil pues, ea, que había desaparecido de mi vista y yo tan tranquilo.

Investigando en este enlace (en inglés) recomiendan abrir una ventana terminal (que en Ubuntu es CTRL+ALT+T) y transcribir lo siguiente:

sudo killall unity-panel-service

colocan su respectiva contraseña ¡y listo!

En el enlace mencionado culpan a ciertas aplicaciones, en mi caso lo que hice fue una «gran» actualización y creo allí fue cuando desapareció de mi Escritorio.

Si desean personalizar aún más hagan click en el botón de apagado y del submenú seleccionan «Configuración del sistema» y al abrir la ventana selecciona «Fecha y Hora» para luego hacer click en la pestaña «Reloj» y cualquier cambio que hagan tomará efecto inmediatamente, prueben y vean.

Dado el caso que «Simple clock» por alguna razón no esté instalado, pues lo reisntalamos con:

sudo apt-get install indicator-datetime

y luego lo configuramos con:

sudo dpkg-reconfigure --frontend noninteractive tzdata

para luego reniciarlo (el unity-panel-service ) con el comando que explicamos al principio.

<Eso es todo, por ahora>.


La resolución de monitor que «ha muerto» hoy.

Actualizado el día sábado 04 de febrero de 2017.

Un año y diez meses después de haber comenzado esta entrada -lo cual es muestra de la «estabilidad» de Ubuntu- volvimos a tener problemas con el reloj y la bandeja del sistema. Por supuesto que aplicamos nuestra consabida fórmula aquí explicada pero lamentablemente no funcionó.

Una cosa que notamos al ejecutar el comando arriba descrito, una y otra vez, fue el «parpadeo» de las ventanas abiertas, que se redimensionaban para ocupar la pantalla completa. Como tenemos un solo monitor, un venerable Samsung de 17 pulgadas en diagonal, lo tenemos trabajando en su resolución nativa de 1024 por 768 píxeles. La resolución nativa indica el mejor tamaño sin perder legibilidad (y nosotros ahora por la edad que estamos más cegatones que nunca). Es por ello que no pocas veces, para ciertas tareas, cambiar la resolución al máximo 1280 por 1024 (esto es especialmente útil para cuando nos conectamos de manera remota a varios clientes con Remmina) y he aquí que apareció de nuevo la barra del reloj.

Monitores en Ubuntu ejemplo con Samsung 17 pulgadas.
Monitores en Ubuntu ejemplo con Samsung 17 pulgadas.

Tal vez muchos se sorprenderán con lo que vamos a decir: los monitores de 17 pulgadas «han muerto», eso es parte de la vida, lo único constante es el cambio y lo hemos visto pasar con el transcurso de las décadas. Desde Windows 3.11 con 640 por 480 píxeles, a Windows 98 con 800 por 600, a Windows XP con 1024 por 768 y hoy en día con Ubuntu 16 a 1280 por 1024 píxeles (de hecho en las oficinas utilizamos monitores de 22 pulgadas y los celulares a pesar de tener el mismo tamaño la resolución ha aumentado siendo muy distintivo el caso de «Retina Display®», norma indicada por el genial Steve Jobs, fundador de la empresa Apple).

Esta situación se presenta tiempo después que descargamos «grandes» actualizaciones de nuestro sistema operativo libre favorito y que manifestamos públicamente por medio de nuestra cuenta Twitter:

Por ahora nuestra solución será basada en hardware y no en software ya que consideramos que los programadores de Ubuntu tienen razón: 1024 por 768 se nos ha quedado corto en este año 2017. Es por ello que trabajaremos muy duro para ganar dinero y comprar un monitor de 22 pulgadas que lo conectaremos como principal a la tarjeta de video Nvidia y el viejo monitor lo colocaremos en la tarjeta gráfica integrada Radeon de la tarjeta madre.

Lo único constante es el cambio (y el único cambio que le gusta al ser humano es el cambio de pañal).

Evolución de los monitores a lo largo del tiempo.

Actualizado el miércoles 1° de marzo de 2017.

Para complementar lo del punto anterior, el siguiente vídeo ilustra muy bien, por medio de la evolución de los videojuegos, la terminología y evolución de los monitores y sus resoluciones (aparte de tocar con menos importancia el tema del sonido -y muchísimo menos importante el tema de la memoria RAM-). Disfrutad, pues, el documental en idioma inglés con «The 8-Bites Guy»:

Fuentes consultadas.

En idioma castellano:

En idioma inglés:

Para saber más sobre Ubuntu según lo que publicamos por Twitter:


 

Download PDF

El RIF en Venezuela (Registro de Información Fiscal).

Download PDF

Registro de Información Fiscal ( RIF ): su historia en Venezuela.

Sobre el RIF me contaba una fallecida Contadora Pública (que en paz descanse+) con la cual tuve la feliz oportunidad de trabajar, que en los años 70 cuando ella estudiaba en la Universidad de Carabobo ya en clases calculaban el dígito verificador (que viene a ser similar a los códigos de barra), sólo que en aquella época las computadoras NO estaban al alcance del pueblo (ni siquiera las calculadoras electrónicas -oh cómo recuerdo mi querida Casio A1, ¡si A1! funcionaba con una sola pila doble A de pantalla verde-) y ellos/ellas lo hacían manualmente. En fin, que yo conocía lo del RIF desde los años 80 pero desconocía lo del cálculo del dígito verificador hasta que ella me lo dijo:

SIR RIF 07
SIR RIF 07

Al principio de este siglo me dí a la tarea de buscar dicha fórmula y conseguí el siguiente algoritmo escrito en javascript, desconozco su autoría pero es el que he venido utilizando esta última década (más adelante explicaré cómo funciona):

function VerifRIF(RIF)
{
//
// Función JavaScript VerifRIF Versión 1, 18/Marzo/2002
// Recibe el Numero de RIF sin separadores y devuelve
// True si el RIF es correcto
//
var SumRIF;
var NumRif;
NumRif = RIF
var cadena = new Array();
if (NumRif.length == 10)
{
for (i = 0; i < 10; i++)
{
cadena[i] = NumRif.substr(i,1);
}
cadena[0] = 0;
if ((NumRif.substr(0,1) == "V")||(NumRif.substr(0,1) == "v")) cadena[0] = 1
if ((NumRif.substr(0,1) == "E")||(NumRif.substr(0,1) =="e")) cadena[0] = 2
if ((NumRif.substr(0,1) == "J")||(NumRif.substr(0,1) == "j")) cadena[0] = 3
if ((NumRif.substr(0,1) == "P")||(NumRif.substr(0,1) == "p")) cadena[0] = 4
if ((NumRif.substr(0,1) == "G")||(NumRif.substr(0,1) == "g")) cadena[0] = 5
cadena[0] = cadena[0] * 4
cadena[1] = cadena[1] * 3
cadena[2] = cadena[2] * 2
cadena[3] = cadena[3] * 7
cadena[4] = cadena[4] * 6
cadena[5] = cadena[5] * 5
cadena[6] = cadena[6] * 4
cadena[7] = cadena[7] * 3
cadena[8] = cadena[8] * 2
SumRIF = cadena[0] + cadena[1] + cadena[2] + cadena[3] +
cadena[4] + cadena[5] + cadena[6] + cadena[7] + cadena[8];
EntRIF = parseInt(SumRIF/11);
Residuo = SumRIF - (EntRIF * 11)
DigiVal = 11 - Residuo;
if (DigiVal > 9)
DigiVal = 0;
if (DigiVal == cadena[9])
return true;
else
return false;
}
else return false;
}

Yo obtuve mi RIF en 1998 (acompañado de un NIT) y escribo estas lineas porque ME SORPRENDO al leer por los buscadores de internet que primero fue el NIT (Número de Identificación Tributaria) y que luego fue en el 2006 que CREARON el RIF lo cual considero una información errada. He buscado por GOOGLE  y obtuve la información de cuando se eliminó el NIT e inclusive cuándo se creó el RIF en este siglo (Gaceta Oficial N° 38.389 del jueves 2 de marzo de 2006) y creo que le volví a agarrar una que este popular buscador no se sabe:

SIR RIF 07
SIR RIF 07

Es así ahora  que recuerdo, con ayuda de mi envejecido y primer comprobante de RIF que fue el Decreto N° 193 del 2 de julio de 1979 (la cual pueden descargar desde la Procuraduría General de la República Bolivariana  o desde nuestro sitio web -gracias a «pdfsam» son tres hojas de la Gaceta ) y bajo la Presidencia de Luis Herrera Campíns cuando se estableció de manera obligatoria dicho registro y era muy amplios los datos que debía contener:

n) Cualquier otra información que requiera la Administración del Impuesto Sobre la Renta.

¡hasta exigían apartado postal! (que para la época fungía como suerte de correo electrónico). Interesante es el artículo 10 el cual ya establecía exhibir el RIF y dejar constancia en las facturas que emitieran ¡no fue sino hasta 1994 que el Presidente Rafael Caldera mandó a crear al SENIAT y muchos años después que emitieron normas de facturación e incluyeron ese punto!

Al final del decreto se aclara que quedan derogados los decretos: N° 2.920 del 24 de octubre de 1978 (creación original del RIF) y el decreto N° 3.102 del 23 de febrero de 1979 (prorrogación de entrada en vigencia del mismo). La diferencia fundamental entre ambos decretos (N° 2.920 y N° 193 -diferentes presidentes de la República, Carlos Andrés Pérez y Luis Herrera Campíns-) estriba en que originalmente sólo se les exigía inscribirse a quienes o cuales hubieran obtenido enriquecimiento neto anual -a partir de 1977- mayor a Bs. 24 mil o «ingresoss» (sic) brutos mayor a Bs. 72 mil anual. En el Decreto de Luis Herrera se obliga a todo el mundo a inscribirse y dado el caso la persona o entidad manifestare que no está obligada a hacerlo (artículo 11, parágrafo único), le dieran igual curso a los trámites que a bien tuvieran que hacer ante el Gobierno pero debía ser reportado en paralelo al Ministerio de Hacienda. En ambos decretos (artículo 7) se establecen los famosos «operativos de RIF» que se ejecutan desde la Presidencia de Hugo Rafael Chávez Frías e indican que se extenderá un comprobante provisional y luego de 3 meses emitirán el comprobante definitivo (imagino que debido a la tecnología de la época: yo, por ejemplo, hacía mis trabajos del liceo en una viejísima máquina de escribir que mi tío desechó de una de sus oficinas la cual yo reparé y ajustaba constantemente). Al día de hoy uno mismo llena los datos por primera vez por internet (basado en el número de cédula en las personas naturales y el tomo y registro en las personas jurídicas) para luego ir en persona a la sede más cercana del SENIAT donde le emiten de una vez el RIF ELECTRÓNICO (en este blog explican de manera más detallada el proceso) luego las renovaciónes se hacen vía web sin necesidad de acudir a las oficinas del SENIAT. Dicho proceso ha logrado reducir en 60% las colas en esa institución .

El RIF DIGITAL tal como lo conocemos hoy en día fue creado en la Gaceta Oficial N° 40.214 del jueves 25 de julio de 2013 y entre otras novedades establece 3 códigos de seguridad para evitar su falsificación así como un servicio en línea por internet para comprobar su veracidad con ayuda de un código QR para ahorrar tiempo evitando escribir la dirección en la computadora o teléfono celular.

Es de hacer notar que en este último decreto se exceptúan de la obligatoriedad de inscripción a los menores de edad (siempre y cuando no posean bienes ni realicen actividades económicas) así como exhibir, reflejar y colocar en productos, publicidad, páginas web (internet), libros contables, facturas, etc. También anuncia la extinción definitiva de la forma «SIR RIF 07» con la cual yo obtuve mi primer comprobante de RIF en 1998.

Los puntos más resaltante del RIF DIGITAL es que se denomina ahora «REGISTRO ÚNICO DE INFORMACIÓN FISCAL» (artículo 4 providencia N° SNAT/2013/0048) y especifica que es «…único, exclusivo y excluyente…» y en el artículo 7 se establece la condición «activo o inactivo» (lo cual pienso yo es reflejo del uso de bases de datos por ordenadores) bajo ciertas condiciones (muerte de persona natural, por ejemplo).

Volviendo al artículo 4 podemos observar la necesidad de identificar con correspondencia unívoca las personas naturales o jurídicas a un código alfanumérico.

He aquí entonces que volvemos a la fórmula del «número de chequeo» (así lo llamaba el SENIAT en 1998) y procedo a explicar el código arriba mostrado:

  • Declaración de variables y una matriz para luego almacenar cada letra y dígito, lo que se le pasa a la función en la variable «RIF» se almacena en otra variable llamada «NumRif»:
var SumRIF;
var NumRif;
NumRif = RIF
var cadena = new Array();
  • Importante: el RIF a verificar debe tener exactamente 10 caracteres, si no la función devuelve FALSO:
if (NumRif.length == 10)
  • Cada uno de los caracteres se almacena en la matriz declarada al principo, importante asignar cero a «cadena[0]» ya que si el primer caracter NO es ninguno de los ya normalizados el cálculo mediante fórmula no coincidará con el dígito verificador:
for (i = 0; i < 10; i++)
{
cadena[i] = NumRif.substr(i,1);
}
cadena[0] = 0;

El primer caracter del RIF debe ser alguno de los siguientes:

  • «V»: Venezolano o venezolana.
  • «E»: extranjero o extranjera (número de cédula mayor a 80 millones).
  • «P»: Pasaporte, por ejemplo es útil para los cantantes que se presentan en nuestro país y que hay que retenerles Impuesto sobre la renta.
  • «J»: Persona jurídica, osea, compañías anónimas, sociedades anónimas, S.R.L., etc.
  • «G»: Gobierno, entes gubernamentales, de cualquier Poder, estado, municipio e incluso organismos «autónomos» (ejemplo Universidad de Carabobo RIF G-20000041-4).

 

A futuro es importante considerar lo siguiente:

  • ACTUALIZACIÓN AL 25 DE MARZO DE 2015: el Presidente de la República Nicolás Maduro Moros ordenó al SENIAT identificar a las Comunas y Consejos Comunales (imagino yo que será extensivo a las Cooperativas, pienso yo PERO el Presidente no las nombró, esto es idea mía) con la letra «C» las cuales antes se venían registrando con la letra «J».

  • Dependiendo del primer caracter se le asigna el valor a «cadena[0]» según lo siguiente:
if ((NumRif.substr(0,1) == "V")||(NumRif.substr(0,1) == "v")) cadena[0] = 1
if ((NumRif.substr(0,1) == "E")||(NumRif.substr(0,1) =="e")) cadena[0] = 2
if ((NumRif.substr(0,1) == "J")||(NumRif.substr(0,1) == "j")) cadena[0] = 3
if ((NumRif.substr(0,1) == "P")||(NumRif.substr(0,1) == "p")) cadena[0] = 4
if ((NumRif.substr(0,1) == "G")||(NumRif.substr(0,1) == "g")) cadena[0] = 5
  • IMAGINO YO que los RIF que comienze por la letra «C» se les asignará el siguiente valor disponible, el seis (ES UNA SUPOSICIÓN MÍA, SE DEBE ESPERAR EL PRONUNCIAMIENTO OFICIAL DEL SENIAT):
if ((NumRif.substr(0,1) == "C")||(NumRif.substr(0,1) == "c")) cadena[0] = 6
  • Luego ese valor asignado a «cadena[0]» se multiplica por 4, los demás caracteres que deben ser números se multiplican por los siguientes valores correspondientes (importante acotar que esta función le falta discriminar si en realidad son números lo que introduce el usuario en la variable «RIF»  de lo contrario asigna cero y el cálculo no dará correctamente):
cadena[0] = cadena[0] * 4
cadena[1] = cadena[1] * 3
cadena[2] = cadena[2] * 2
cadena[3] = cadena[3] * 7
cadena[4] = cadena[4] * 6
cadena[5] = cadena[5] * 5
cadena[6] = cadena[6] * 4
cadena[7] = cadena[7] * 3
cadena[8] = cadena[8] * 2
  •  Luego sumamos cada uno de los valores de la matriz y los guardamos en la variable «SumRIF»:
SumRIF = cadena[0] + cadena[1] + cadena[2] + cadena[3] +
cadena[4] + cadena[5] + cadena[6] + cadena[7] + cadena[8];
  • Lo siguiente es calcular el residuo resultante de dividir «SumRIF» entre 11 y para ello se utiliza la función de javascript «parseINT()» que devuelve la parte entera y al multiplicarla por 11 y restar de «SumRIF» devuelve dicho valor.
EntRIF = parseInt(SumRIF/11);
Residuo = SumRIF - (EntRIF * 11)

RECORDAR los miembros que componen una división inexacta (en nuestro ejemplo el divisor es una constante, 11, número primo):

división

  • Por último vamos a calcular la diferencia entre el residuo y la constante 11 teniendo en cuenta que si el residuo es 0 u 1 el dígito de verificación valdrá cero :
DigiVal = 11 - Residuo;
if (DigiVal > 9)
DigiVal = 0;
  • Y listo ya sólo queda comparar si coincide nuestro cálculo con el valor que introdujo el usuario a la función:
if (DigiVal == cadena[9])
return true;
else
return false;

 

Hagamos un cálculo de ejemplo, para ello tomaremos a la Corporación Socialista del Cemento S.A  cuyo RIF es el siguiente: G-20009048-0, comenzemos por eliminar los guiones: G200090480.

  • «G» toma el valor de 5 multiplicado por 4 =20
  • 2 multplicado por 3 =   6
  • 0 multplicado por 2 =   0
  • 0 multplicado por 7 =   0
  • 0 multplicado por 6 =   0
  • 9 multplicado por 5 = 45
  • 0 multplicado por 4 =  0
  • 4 multplicado por 3 = 12
  • 8 multplicado por 2 = 16

Sumamos:20+6+0+0+0+45+0+12+16=99

Dividimos por 11 y tomamos el residuo que en este caso es cero: 99÷11=9

Dicho residuo lo restamos de once: 11-0=11 y como es mayor que 9 (tiene dos cifras) ENTONCES el dígito de verificación es cero lo cual corresponde con el RIF suministrado: «G-20009048-0»

Es de acotar que en términos de presentación al usuario mi representación favorita es la siguiente:

rif enmascaradoDicha forma de interfaz al usuario NO PERMITE introducir letra diferentes a las normalizadas (a futuro incluiré la letra «C» en dicho objeto de programación) y sólo permite números en el resto del RIF haciendo el cálculo del dígito de verificación y es el usuario quien lo debe comparar con el que suministra el cliente a quien se le desea facturar, así se garantiza la correcta escritura del nombre o razón social.

En este último punto debemos tocar el tema de la consulta masiva de RIF cuyo servicio es ofrecido por el SENIAT por medio de su página web, esta consulta (aparte de devolver el nombre o razón social, eso nos ahorra el trabajo de escribir) también devuelve el porcentaje de IVA a retener (75% ó 100% actualmente), en el caso de que la farmacia donde trabajemos sea Agente de Retención; como dicho tema es un poco largo de explicar («Contribuyentes Especiales») he decidido dejarlo para una entrada posterior.


 

Actualizado el sábado 15 de agosto de 2015:

El día de hoy se tramitó el primer RIF con la letra «C», dicha noticia la recojo vía Twitter, he aquí que incluyo los mensajes:

 

 

 

También el SENIAT en su página web hace el anuncio oficial, más sin embargo aún no veo una Providencia como tal sobre dicho documento de información fiscal.

El SENIAT imprimió primer RIF con el alfanumérico “C”

 


Actualizado el domingo 16 de agosto de 2015:


 

<Eso es todo, por ahora>.

Download PDF
Gaceta 0ficial 40.608 sumario.

Gaceta Oficial N° 40.608: aumento de la Unidad Tributaria a Bs. 150,00.

Download PDF

Son 3 hojitas en formato pdf  (agradezco a “pdfsam” y lo recomiendo para dividir y combinar documentos en ese formato); con este aumento las facturas de compra con monto inferior a 20 U.T. (Bs. 3.000,00) podrán ser ingresadas en «caja chica» sin hacerle retención de IVA (Contribuyentes Especiales); también aumentan automáticamente el Bono Alimentación para los Trabajadores y Trabajadoras, el costo de emisión de los pasaportes, multas y un sinfín de cosas más.

Gaceta 0ficial 40.608 sumario.
Gaceta 0ficial 40.608 sumario.

Para descargar dicho ejemplar electrónico de la Gaceta Oficial desde nuestra página web haga click aquí.

Si desea descargarla desde el Tribunal Supremo de Justicia  deberá luego introducir el número “40608” en el cuadro de búsqueda rápida.

<Eso es todo, por ahora>.

Download PDF