Cesar Systems

Herramientas Informaticas

ERROR FACTURACIÓN CFDI 4.0

Con la nueva facturación han salido algunos detalles, como en este caso es la validación del nombre del receptor, al querer timbrar sale este mensaje.

 CFDI40102 El resultado de la digestion debe ser igual al resultado de la desencripcion del sello.

En el caso de nosotros el nombre del receptor contenía el carácter & por ejemplo el nombre era frutas & verduras o tambien Diseño&Produccion.

En este caso la solución fue remplazar el & por espacio vació quedando de la siguiente forma frutas verduras o DiseñoProduccion.

En caso de que tenga Ñ se cambia por N.

Igual si es otro carácter como . o – se tiene que quitar y pasa la validación timbrando correctamente aunque en la constancia fiscal muestre ese carácter

CORRECCIÓN: Esto funciono al principio pero ahora para XML el & se tiene que poner el carácter de escape & pero al generar la cadena original se tiene el & tal cual sin carácter de escape

Saludos

Como clonar tu Windows 10 a un nuevo disco SSD

Y bien ya mostramos como clonar un disco con un sistema operativo Linux “Zorin 16. PRO” ahora les mostrare como clone un un disco duro de 120GB Aprox donde teníamos Windows 10 a otro disco duro de 240GB Aprox

El programa que utilizamos se llama OEMEI Backupper para uso personal, es Freeware “gratuito”

A mi me ha servido la opción de clonar disco, después de seleccionar esta opción te pedirá el disco duro origen y luego el destino, es muy fácil de usar realmente

Posteriormente cuanto se termine de clonar se clonara con la misma capacidad por lo tendrás que aumentar el espacio en administrador de discos

Puedes descargarlo en cualquiera de las siguientes opciones

Como clonar todo el disco duro a un nuevo SSD – Clonando Zorin Linux Ya instalado

Se llega el momento en el cual necesitamos mas espacio de disco duro ya que 240 o 250 GB no alcanza para lo que queremos hacer, así que nos hemos conseguido un disco duro de aprox .940 GB, pero realmente da flojera formatear y reinstalar todo el software así que lo que hicimos fue clonar todo el disco duro.

Para hacer esto es necesario que el disco destino sea mayor en tamaño que el disco origen, ademas se va a borrar todo el contenido si es que tiene algo en el disco destino

Bien ya conectado el disco duro destino a la PC lo primero que haremos sera abrir la terminal y escribir el siguiente comando

sudo fdisk -l
Nos arrojara el nombre/ubicación del disco y también el tamaño del disco, allí podemos ver el nombre del disco destino y mas arriba no se ve en la imagen pero allí esta se ve el nombre del disco origen

Ahora suponiendo que la unidad origen es sda y la unidad destino sea sdb corremos el siguiente código

sudo dd if=/dev/sda of=/dev/sdb status=progress
Saldrá algo parecido a esto

Y listo, todo el sistema operativo se copiara tal cual con todo y particiones

Ya que este instalado el disco nuevo como principal en la PC solo faltaría extender es espacio restante a la partición creada, se pueden ayudar con GPARTED, a ustedes le saldrá en color negro el espacio no asignado nomas lo mueven hasta completarlo y listo

En caso de que lo quieran hacer desde Windows, el sistema operativo de mi compa Bill Gates pueden descargar la utilidad de DD para Windows en el siguiente botón

En caso de que sean usuarios de Windows y no quieren batallar con bajar programas en la próxima publicación les dejare una recomendación de un buen programa para clonar el disco

Comprimir varios archivos conservando las rutas en Zorin Linux

Anteriormente hemos visto como subimos los cambios que le hacemos al fuente de JCPOS2022 siempre esta en un archivo comprimido en el cual conserva la ruta para hacer los cambios mas fácil mente. y se preguntaran como le hago o si lo hago uno por uno, para verdad es que es casi en automático.

Lo ideal es actualizar desde gitlab lo cual es posible darle acceso al repositorio privado si están como mecenas en patreon como nivel intermedio

Mostrare como se hace desde Zorin Linux 16 de forma fácil.

Al hacer commit en netbeans nos salen los archivos que hemos modificado, entonces así sabremos la ruta en la columna de repository path, le damos copiar y lo pegamos en un excel
Creamos la formula para generar el comando por ejemplo para la primer linea ponemos la formula =”tar -cvzf archivos.tar ” & F3 y en la siguiente =” ” & F4 y arrastrando la columna en la esquina y automaticamente se genera el codigo
Para el primer renglón siempre quedara así
Para lo siguientes debe de quedar asi
Lo copiamos al editor de texto prederteminado en mi caso es gedit y le quitamos los espacios
Abrimos la terminal y nos posicionamos en el proyecto y pegamos el comando
Si todo salio bien saldrá algo similar a lo siguiente
Si abrimos el archivo comprimido veremos que se agregando conservando sus rutas y de esa manera facilitando la actualización a otro sistema

Saludos espero que les sirva y no se olviden ser convertirse en mecenas en mi Patreon para obtener contenido exclusivo.

JCPOS2022 CRUD Empresas Guardar Logo Certificado y Archivo Key

Bien ahora para seguir avanzando haremos las altas bajas y cambios del catalogo de empresas ya que actualmente solo tenemos para meter datos de una empresa.

Aprovechando meteremos varios campos extras como el logo, contraseña (Por si se tiene que ingresar por empresa), archivo .cer y .key y contraseña del certificado, por si en un futuro se mete la facturación electronica.

Recortar silencios Automáticamente en vídeos en Zorin Linux GNU/Linux


Últimamente hemos estado transmitiendo vídeos de diferentes cursos y siempre es un dolor de cabeza editar y subir el resumen para ahorrarles tiempo, es decir quitar los silencios incómodos.

Para ello afortunadamente existe una aplicacion hecha en python que consume la libreria FFMPEG

Bien descargaremos la aplicación y veremos como usarla en Zorin Linux 16.1

Una vez descargada descomprimimos y abrimos la terminal nos posicionamos en la carpeta donde descomprimimos los archivos y corremos el siguiente comando para instalar todos los requerimientos que necesita el programa

Agregando derecho para que permita ver stock al hacer la venta JCPOS2022

Uno de los cambios que no han estado solicitando es que no todos los usuario puedan ver el stock, si no que si no tiene derecho que solo vea el color por si esta bajo en existencia así que empezando

Primero que nada empezamos agregando el cambio del derecho en la base de datos para ello ejecutamos el siguiente comando en la base de datos

alter table perfiles add permiteVerStockVentas  varchar(5) null

Modulo Mostrar Información de la Venta en AdministrarVenta JCPOS2022

Es necesario en algunas para los administradores de venta ver el detalle de la venta sin estar saliendo de la lista de ventas.

Bien lo que haremos es mostrar la información de la venta mostrando los productos y demás información a través de una ventana modal, entonces lo que haremos primera mente es crear un botón que sera el que lanza el modal.

Quedaría el siguiente código en datatable-administrarVentas.ajax.php

  $botones .= "<button type='button' class='btn btn-info  btnMasInfo' data-toggle='modal' data-target='#modalMasInfo' data-dismiss='modal' idVenta='" . $ventas[$i]["id"] . "' idCodigo='" . $ventas[$i]["codigo"] . "' puntoVenta='" . $ventas[$i]["puntoVenta"] . "'  required data-toggle='tooltip' data-placement='top' title='Mas Info'><i class='fa fa-info'></i> </button>";

Al mostrar las ventas en la columna acciones se podrá ver los siguiente

Al final del archivo vistas/modulos/ventas.php antes de que empieze la etiqueta script ponemos el siguiente código

<script type="text/javascript">
Quedaría algo similar a esta imagen

Ahora crearemos el archivo donde estará el modal en la carpeta /ventasModulos

Al darle click quedaría de esta forma

Ahora falta que nos muestre la información de la venta así que desde la vista creamos la función cargaDatosVenta, en la cual mandamos invocar mediante AJAX los datos de la venta

Quedaría de esta forma
Así mandaríamos llamar la función de cargaDatosVenta
Y ya nos muestra los productos de la venta

Ahora falta que nos muestre la dirección del cliente, en el archivo datatable-administrarVentas.ajax.php en el mismo boton btnMasInfo agregamos el atributo del id_cliente

Quedaría de la siguiente forma
Y en el archivo vistas/modulos/ventasModulos/modalInfo.php metemos la funcion datosVenta
Y así lo mandamos llamar al hacer Click
Finalmente quedaría así

Que hacer después de instalar Zorin Linux 16.1 PRO

Después de probar Kubuntu nos hemos decidido volver a Zorin linux pero esta vez a la versión 16.

Lo que nos ha gustado de esta versión es que ya viene con muchos programas pre instalados como son los siguientes:

  1. Kdenlive
  2. Minder
  3. Audacity
  4. Blender
  5. Brasero
  6. Ardour
  7. Remmina
  8. Darktable
  9. FreeCad

Así que instalar vamos a instalar solo programas faltantes para el desarrollo y algunas utilidades necesarias.

Primero abrimos la terminal con CTRL+ALT+T accedamos como root con el siguiente comando, nos va a solicitar contraseña

sudo su

Verificamos si existen actualizaciones con el siguiente comando

apt update

Procedemos actualizar

apt upgrade

Instalamos Brave, que es un navegador que bloquea anuncios, no lo usen al navegar en mi pagina o tendrán pesadillas

Ejecutar uno a uno

sudo apt install apt-transport-https curl
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
apt update
apt install brave-browser

Listo ya tenemos instalado Brave, ahora vamos a instalar Anydesk para conectarnos a otras PC y también para conectarnos a nuestra PC desde otra PC externa a la red.

Primero agregamos la llave de validacion

wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | apt-key add -

Agregamos el repositorio

echo "deb http://deb.anydesk.com/ all main" > /etc/apt/sources.list.d/anydesk-stable.list

Actualizamos el cache

apt update

Instalamos AnyDesk

apt install anydesk

Ahora vamos a instalar el IDE Netbeans para nuestros desarrollos WEB

Descargamos el archivo de instalación con el siguiente comando

wget https://dlcdn.apache.org/netbeans/netbeans-installers/14/Apache-NetBeans-14-bin-linux-x64.sh

Le asignamos propiedades de archivo ejecutable

chmod +x Apache-NetBeans-14-bin-linux-x64.sh

instalamos el JDK de Java

apt install openjdk-8-jdk

Instalamos Netbeans le damos siguiente a todo y solo escogemos bien la ruta del JDK

./Apache-NetBeans-14-bin-linux-x64.sh

Ahora instalamos PHP8 y 8.1 para debugear nuestros proyectos, ejecutamos linea por linea en caso de que no funcione todo junto

add-apt-repository ppa:ondrej/php
apt install php8.0 libapache2-mod-php8.0
apt install php8.1
apt install php8.1-mysql
apt install php8.1-xdebug
apt install php8.1-mbstring
apt-get install php-intl

Ahora instalamos XAMPP, para pruebas regulares

Primero descargamos el archivo con el siguiente codigo

wget https://downloadsapachefriends.global.ssl.fastly.net/8.1.6/xampp-linux-x64-8.1.6-0-installer.run

Asignamos la propiedad de ejecutable al archivo descargado

chmod +x xampp-linux-x64-8.1.6-0-installer.run

Instalamos XAMPP despues de ejecutar el comando le damos siguiente a todo

./xampp-linux-x64-8.1.6-0-installer.run

Instalamos Git

apt install git

Instalamos los codecs de vídeos privativos

apt install ubuntu-restricted-extras

Instalamos Telegram Desktop

apt install telegram-desktop -y

Instalamos capturador de pantalla mas fácil de usar

apt install -y deepin-screenshot

Instalamos OBS Studio

instalamos OBS Studio

Y amigos seria todo espero que les sirva, esto es lo que uso cotidianamente

CURSO MARIADB -PROCEDIMIENTOS ALMACENADOS #10

Un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) almacenado físicamente en una base de datos. Su implementación varía de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

Los procedimientos pueden ser ventajosos: cuando una base de datos es manipulada desde muchos programas externos. Al incluir la lógica de la aplicación en la base de datos utilizando procedimientos almacenados, la necesidad de embeber la misma lógica en todos los programas que acceden a los datos es reducida. Esto puede simplificar la creación y, particularmente, el mantenimiento de los programas involucrados.

Podemos ver un claro ejemplo de estos procedimientos cuando requerimos realizar una misma operación en un servidor dentro de algunas o todas las bases de datos y a la vez dentro de todas o algunas de las tablas de las bases de datos del mismo. Para ello podemos utilizar a los Procedimientos almacenados auto creables que es una forma de generar ciclos redundantes a través de los procedimientos almacenados.

Hoy en día existe un debate si se debe de usar procedimientos almacenados, en mi opinión digo que si, hay pros y contras en usar procedimientos almacenados, pero al final es mejor mejor practica usarlos ya que funcionara mas eficientemente siempre y cuando se haga bien, también si se da el caso de que sea una aplicación de escritorio la mayor parte de las veces no se necesitara recompilar y actualizar el ejecutable, si no que solo se tendrá que modificar la base de datos .

Bien como prueba vamos a hacer un procedimiento almacenado básico, tal procedimiento va a insertar en la tabla clientes y luego ejecutara una consulta.

CREATE PROCEDURE `SPR_InsertaCliente`(IN `strNombre` VARCHAR(256)
				    , IN `strRFC` VARCHAR(15)
                                    , IN `strDireccion` VARCHAR(15)) 

BEGIN 

	insert into clientes(nombres 
			    ,RFC
			    ,direccion ) 
			
		    values( strNombre 
			    ,strRFC
			    ,strDireccion ); 

		select * from clientes; 
END;

Ahora mandamos llamar el procedimiento almacenado que hara 2 cosas, una es insertar

SET
    @p0 = 'Cesar';
SET
    @p1 = 'XXXA';
SET
    @p2 = 'Conocido';
CALL
    `SPR_InsertaCliente`(@p0, @p1, @p2);

O simplemente lo podemos invocar de la siguiente manera

CALL SPR_InsertaCliente('Cesar', 'XXXA', 'Conocido');

El resultado será el siguiente



id	nombres	RFC	direccion	
1	Julio	xxx	conocido	
2	kakaroto	xxe	vegita	
3	Cesar	XXXA	Conocido	
4	Cesar	XXXA	Conocido	
5	Cesar	XXXA	Conocido	

Nos arroja varias ya que hemos ejecutado varias veces el procedimiento

Vídeo Demostrativo

Página 18 de 141

Creado con WordPress & Tema de Anders Norén