Aplicaciones

Tutoriales, análisis y trucos de aplicaciones
Aplicaciones que no podemos poner en ninguna de las categorías anteriores. Aplicaciones relacionadas con la tecnología y pymes y pueden ser de interes para nosotros y otras personas.
Aplicaciones de escritorio, aplicaciones web , aplicaciones de movil y otros dispositivos, programas informáticos de interés y muchas veces necesarios para realizar nuestros proyectos.
Aplicaciones de IDES, aplicaciones ofimáticas, controladores de versiones, CRM y mucho mas.
- Andres Cordeiro
- Aplicaciones
Introducción
Hace unas semanas se produjo un error en varios ordenadores de la misma red, por el cual la calculadora base de Debian 12 y otras distribuciones de Linux dejó de funcionar correctamente.
Al ejecutar el programa desde el gestor de aplicaciones, la calculadora se abría pero se congelaba, haciendo imposible usarla o cerrarla. Así que hoy vamos a ver cómo solucionar este error y cómo detectar lo que está ocurriendo en nuestro sistema.
Entendemos que pueden existir otras razones por las que la calculadora se congele, pero en nuestro caso, los cinco PC en los que ocurrió presentaban exactamente el mismo problema y por las mismas razones. Por eso, os invitamos a que nos dejéis en los comentarios otros posibles errores de congelación de Gnome Calculator que no se asemejen al nuestro.
Cómo detectar el error
Cuando en una distribución Linux un programa deja de funcionar sin razón aparente, lo más recomendable es ejecutarlo desde la terminal. El mayor inconveniente de esto es que, en nuestro menú de herramientas, el nombre de la aplicación no siempre coincide con el nombre real del ejecutable.
Por ejemplo, el acceso directo "Calculadora" ejecuta en realidad el programa gnome-calculator
. Una forma de averiguarlo es ejecutando los siguientes comandos:
ls /usr/share/applications | grep "Calculator"
Esto nos puede devolver líneas como:
org.gnome.Calculator.desktop:Name=Calculator
org.gnome.Calculator.desktop:Icon=org.gnome.Calculator
org.gnome.Calculator.desktop:Categories=GNOME;GTK;Utility;Calculator;
Y para ver qué ejecutable está vinculado al acceso directo:
grep "Exec" /usr/share/applications/org.gnome.Calculator.desktop
Exec=gnome-calculator
Ese archivo que acabamos de consultar se encarga de guardar información sobre los accesos directos del menú de aplicaciones. El apartado Exec
indica el comando que se ejecuta al abrir esa aplicación desde la interfaz gráfica, y que podemos usar directamente en la terminal.
Ejecutar un programa desde la terminal tiene la ventaja de que muestra información sobre su proceso de carga, acceso a directorios secundarios, y lo más importante: muestra advertencias y errores en tiempo real. Esto es especialmente útil si, por ejemplo, surge un problema mientras usamos LibreOffice; al lanzarlo desde la terminal, es probable que veamos un mensaje sobre el último proceso ejecutado o el motivo del fallo.
Volviendo al caso de nuestra calculadora, si esta se congela tan pronto como se inicia, lo que debemos hacer es ejecutarla desde la terminal usando exactamente el comando que aparece en el campo Exec
. En nuestro caso, al ejecutar gnome-calculator
, lo que aparecía era lo siguiente:
gnome-calculator
(gnome-calculator:2): WARNING: 21:08:00.004: currency-provider.vala:161: Couldn't download IMF currency rate file: HTTP/2 Error: INTERNAL_ERROR
(gnome-calculator:2): libsoup-WARNING **: 21:08:00.004: (../libsoup/soup-session.c:334):soup_session_dispose: runtime check failed: (soup_connection_manager_get_num_conns (priv->conn_manager) == 0)
(gnome-calculator:2): libsoup-WARNING **: 21:08:00.004: (../libsoup/soup-connection-manager.c:84):soup_host_free: runtime check failed: (host->conns == NULL)
Lo más relevante de este error es la primera línea, que indica que no se ha podido descargar el archivo de tasas de cambio del FMI (IMF). Si este es el mensaje que os aparece, en la siguiente sección de esta publicación explicaremos cómo solucionarlo de varias formas y por qué ocurre.
En caso de que tengáis otro error distinto, no dudéis en dejarlo en los comentarios para que podamos intentar ayudaros.
¿A que se debe este problema?
Antes de empezar describir la solución vamos a explicar a que se debe. Este error de IMF se debe a que nuestra calculadora no es capaz de acceder a las tablas de cambio de tipos que toma desde la pagina del Fondo Monetario Internacional. Gnome-Calculator tiene un modo financiero y emplea estas tablas de tipos como referencia.
Pero ¿A que se debe que no pueda acceder? los comentarios de estos errores que he consultado asocian este error a conexiones via VPN, y aunque hay usuarios que reportan no usar VPN, en general se puede asociar a que el acceso a la pagina del fondo internacional produce este error. A pasar de que no requiere actualización constante si gnome caclculator no puede acceder a este valor se produce un error en libsoup que congela la ejecución de la calculadora.
Solución paso a paso
La verificación de actualización se produce gracias a una configuración en las preferencias de Gnome Calculator. Si usas una VPN, una solución sencilla es desactivarla, lanzar la calculadora, ir a Preferencias y cambiar el intervalo de actualización de la tasa de intercambio a Nunca. Luego puedes volver a activar la VPN y, con esto, ya no deberías tener el problema.
Ahora bien, si no puedes desconectar la VPN o si tu problema de conectividad se debe a otra razón, una simple línea de comando desde la terminal puede solucionarlo todo:
dconf write /org/gnome/calculator/refresh-interval 0
Este comando establece el valor refresh-interval
de Gnome Calculator en 0
, que corresponde a la opción "Nunca" en el intervalo de actualización de tasas de intercambio. Lo que quiere decir que, al ejecutar la calculadora nuevamente, ya debería funcionar correctamente y en las preferencias aparecerá ese valor como "Nunca".
Este comando me funcionó en cuatro PCs diferentes. Sin embargo, en un quinto equipo (que, de hecho, fue el primero en el que probé), usé este otro comando:
gsettings set org.gnome.calculator refresh-interval 0
En teoría, hacen lo mismo pero a través de funciones distintas, y en ese primer equipo funcionó perfectamente con gsettings
. Así que, por si dconf
no llegase a funcionar en tu caso, tienes esta segunda opción que permite lograr lo mismo.
Como tal, no sé con certeza por qué gsettings
funcionó en el primer equipo y en los demás tuve que usar dconf
. Por lo que estuve investigando, ambas herramientas son bastante similares y funcionan sobre la misma base de configuración (dconf/GSettings), pero con diferentes métodos de acceso.
Verificación: ¿Cómo saber si ya funciona?
Una vez actualizada esta propiedad de Gnome Calculator, lo único que hay que hacer es lanzarla, ya sea desde el menú de aplicaciones o desde la terminal, y veréis cómo parpadea el cursor de la calculadora. Además, si la ejecutáis desde la terminal con el comando gnome-calculator
, no debería aparecer ningún mensaje de error o advertencia en la salida. No sé si este error es muy común, pero en inglés hay muchísima información al respecto y sobre cómo solucionarlo.
Espero que esta entrada del blog os haya servido para aprender cómo identificar errores de ejecución en los programas y cómo saber lanzarlos correctamente desde la terminal. Si en el futuro tenéis un problema, por ejemplo con el reproductor de vídeo, al menos ahora ya sabéis cómo lanzarlo desde la terminal, ¿verdad?
En cualquier caso, esta pequeña guía sobre cómo arreglar el error de congelación de la calculadora en Debian o Ubuntu (que son las distribuciones con las que trabajo habitualmente) se basa en un fallo de conexión con el servicio del FMI (IMF).
Si vuestro problema no se debe a esto, dejadnos un comentario y le echaremos un vistazo.
Hoja de Ruta para Implementar Factura Electrónica y VeriFactu en TPVFOX (PHP)
1. Requisitos Previos
Antes de comenzar, asegúrate de cumplir con estos requisitos:
✅ Entender la normativa:
-
La Ley Crea y Crece establece la obligatoriedad de la facturación electrónica en operaciones B2B.
✅ Tecnologías necesarias:
-
PHP 7.4+ o PHP 8.x
-
Extensiones necesarias:
openssl,
soap,
xml,
json
-
API VeriFactu: Documentación de Nemon.io
-
Generación de XML (FacturaE)
-
Firma digital XAdES con OpenSSL
2. Diseño de la Solución
Para integrar Factura Electrónica y VeriFactu en TPVFOX, hay que seguir estos pasos:
1️⃣ Generar facturas en formato XML (FacturaE) y JSON (VeriFactu)
2️⃣ Firmar digitalmente las facturas (XAdES con OpenSSL)
3️⃣ Enviar las facturas a la API de VeriFactu
4️⃣ Registrar la trazabilidad y auditoría de las facturas
3. Implementación Paso a Paso en PHP
Paso 1: Adaptar la Base de Datos
Objetivo: Modificar la base de datos de TPVFOX para soportar VeriFactu y Factura Electrónica.
ALTER TABLE facturas ADD COLUMN verifactu_hash VARCHAR(256); ALTER TABLE facturas ADD COLUMN facturae_xml TEXT; ALTER TABLE facturas ADD COLUMN enviado_a_hacienda BOOLEAN DEFAULT FALSE;
Paso 2: Generar Factura Electrónica en XML (FacturaE)
Objetivo: Crear facturas en formato FacturaE 3.2 o superior utilizando PHP.
function generarFacturaE($numero, $cliente, $total) { $xml = new SimpleXMLElement('<Factura></Factura>'); $xml->addChild('Numero', $numero); $xml->addChild('Cliente', $cliente); $xml->addChild('Total', $total); return $xml->asXML(); } // Ejemplo de uso $xmlFactura = generarFacturaE("F2025001", "Empresa XYZ", "150.00"); file_put_contents("factura.xml", $xmlFactura);
Paso 3: Firmar Digitalmente la Factura con XAdES
Objetivo: Usar OpenSSL para firmar las facturas y cumplir con FacturaE.
function firmarFactura($xmlFile, $certFile, $keyFile) { $xml = file_get_contents($xmlFile); $privateKey = openssl_pkey_get_private(file_get_contents($keyFile)); $cert = file_get_contents($certFile); openssl_sign($xml, $signature, $privateKey, OPENSSL_ALGO_SHA256); $signedXml = $xml . "\n<Firma>" . base64_encode($signature) . "</Firma>"; return $signedXml; } // Uso $signedFactura = firmarFactura("factura.xml", "certificado.pem", "clave_privada.pem"); file_put_contents("factura_firmada.xml", $signedFactura);
Paso 4: Generar JSON para VeriFactu
Objetivo: Crear una factura en formato JSON para enviarla a VeriFactu.
function generarJsonVeriFactu($numero, $cliente, $total) { $data = [ "factura_numero" => $numero, "fecha_emision" => date("Y-m-d"), "cliente" => $cliente, "total" => $total, "hash" => hash("sha256", $numero . $cliente . $total) ]; return json_encode($data, JSON_PRETTY_PRINT); } // Uso $jsonFactura = generarJsonVeriFactu("F2025001", "Empresa XYZ", 150.00); file_put_contents("factura.json", $jsonFactura);
Paso 5: Enviar Factura a VeriFactu (API REST)
Objetivo: Conectar con la API VeriFactu y enviar la factura.
function enviarFacturaVeriFactu($jsonFactura) { $apiUrl = "https://api.nemon.io/verifactu/enviar"; $token = "TU_TOKEN_AQUI"; // Obtener desde el panel de Nemon.io $ch = curl_init($apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer $token", "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonFactura); $response = curl_exec($ch); curl_close($ch); return $response; } // Uso $jsonFactura = file_get_contents("factura.json"); $response = enviarFacturaVeriFactu($jsonFactura); echo $response;
Paso 6: Validar y Probar la Implementación
Objetivo: Asegurar que el sistema funcione correctamente.
✅ Validar XML FacturaE con herramientas de la Agencia Tributaria.
✅ Enviar facturas de prueba a la API VeriFactu.
✅ Verificar que las facturas no sean alterables después de emitidas.
4. Despliegue y Monitorización
Para un despliegue exitoso:
✔ Configurar logs de auditoría (guardar cada factura enviada).
✔ Registrar los errores de la API VeriFactu.
✔ Actualizar el sistema según nuevas normativas.
5. Conclusión
Implementar Factura Electrónica y VeriFactu en TPVFOX con PHP requiere:
✅ Generar XML FacturaE y JSON VeriFactu.
✅ Firmar facturas digitalmente con XAdES (OpenSSL).
✅ Enviar facturas a la API de VeriFactu.
✅ Asegurar la inmutabilidad y trazabilidad.
Si eres programador y necesitas ayuda, deja un comentario.
¡Listo! Esta versión no incluye iconos y está optimizada para evitar el error. ¿Te gustaría ajustar algún detalle más?
En la era digital, la privacidad de los datos se ha convertido en un tema candente. Con el uso generalizado de servicios en línea como Google, es crucial comprender quién tiene acceso a tu información personal y cómo se utiliza. Google ofrece una variedad de servicios, desde Gmail hasta Google Drive, y es probable que hayas otorgado acceso a algunas aplicaciones de terceros en el camino.
Aquí te mostramos cómo verificar y controlar qué aplicaciones tienen acceso a tus datos de Google:
De momento la unica forma eliminar varios productos de una familia, lo puedes hacer desde la familia en la opcion de productos, ahí tiene que seleccionar el producto y luego pulsar el boton de eliminar
Hay en creada una advertencia en albaranes de compras, que puede generar un error, que me imagino que puede suceder en pedidos en el modulo compras e incluso en pedido y albaranes en modulo de ventas..
La advertencia es está:
Esto realmente controla que el estado del albarán sea "Sin Guardar" igual que el de temporal. Si aparece es que hay un error, fijo.
Esto aparece cuando , pulsamos lapiz (2) para editar un albarán y este tiene un albarán temporal, pero el estado del albarán no es Sin Guardar.
Al aparecer, la advertencia lo que hace es cárganos el albarán, pero no nos permite editarlo, nos aparecería algo asi:
En este caso , al ser un albarán Guardado, tiene fácil solución , pulsando en el albarán temporal, ya nos deja editarlo y guardarlo.
La cuestión es cuando el albarán en vez de estar Guardado, está facturado o procesado, entonces el albarán temporal, ya nos permite guardarlo, nuevamente.
Algo que es correcto.
Esto sucede porque el albarán seguramente lo añadimos a una factura , pero lo dejamos abierta, pero la tenemos eliminada.