Herramientas Informaticas

Autor: juliocesar20200413 Página 17 de 139

Desarrollador web apasionado y gusto por la buena musica

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

CURSO MARIADB 10 – VISTAS

Las vistas en MariaDB o MySQL son tablas virtuales que no almacenan ningún dato sino que es el resultado de la consulta de varias tablas o una según se allá hecho la consulta, por ejemplo, tenemos la tabla clientes y la tabla ventas, en ventas aparte de los demás campos propios de una venta tenemos el idCliente que se relaciona con el campo id de la tabla cliente y de allí podemos tomar el nombre, por ejemplo generamos el siguiente guion para obtener todos los datos.

SELECT a.id as idVenta
	, a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion	as direccion
FROM ventas a
	,clientes b 
   where idCliente=b.id

Nos dará como resultado lo siguiente

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

Bien en base a esa consulta podemos crear la vista

CREATE
 VIEW `vw_vistaVenta`
 AS SELECT a.id as idVenta
    , a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion   as direccion
FROM ventas a
    ,clientes b 
   where idCliente=b.id;

Ahora solo en lugar de escribir todo el código que pusimos al principio solo pondremos lo siguiente

select * from vw_vistaVenta;

Y nos arroja el mismo resultado sin tanto código

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

CURSO MARIADB 10 – RESPALDOS AUTOMATICOS DIARIOS #8

Bien ya explicamos como generar respaldos manuales, pero lo importante es que se generen automáticamente sin tener que intervenir nosotros, también es importante comprimir el archivo ya que conforme pasa el tiempo y se ingresan datos la base de datos crece en tamaño, lo bueno de comprimirla es que baja su tamaño hasta 10 veces .

Bien primero para el caso de Windows vamos a descargar un compresor para Windows que se llama XZ puede descargarlo desde source forge XZ Utils for Windows download | SourceForge.net

Copiamos el archivo en c:\xampp\mysql\bin

Quedaría el ejecutable en esa carpeta

Ahora abrimos el bloc de notas y metemos el siguiente texto

cd c:\xampp\mysql\bin
mysqldump --opt --events --routines --triggers --default-character-set=utf8 -u root pos | xz > c:\respaldo\respaldo.sql.xz

Lo guardamos en la carpeta respaldos o en la carpeta de su preferencia, lo guardamos con extensión .bat o

Vemos como guardo el archivo respaldo.sql.xz
A abrir el archivo comprimido y ver el archivo SQL nos debe mostrar algo similar a la imagen

Ahora sigue para programar para que se ejecute automáticamente

Abrimos el programador de tareas ya esta instalado en Windows Solo nos vamos al Inicio y escribimos programador de tareas, luego vamos al menú acción y le damos clic en Crear Tarea básica
Le ponemos el nombre de la tarea programada y le damos siguiente
Le ponemos cada tanto tiempo se va ejecutar el archivo .bat,le damos siguiente
Escogemos cada tanto tiempo se va ejecutar y a que hora
Escogemos que programa o script se va a ejecutar

Y listo nuestro programa se estará ejecutando diariamente si la PC o Servidor se encuentra encendido

CURSO MARIADB 10 – GENERAR RESPALDOS #7

Una función importante para los administradores de la base de datos es la de generar respaldos de bases de datos y levantar respaldos, tanto para trabajar en ambientes de prueba como recurarse de errores críticos.

Primero que nada veremos como hacer el respaldos desde PHPMYADMIN es realmente muy sencillo.

Primero seleccionamos la base de datos a la cual querernos realizar el respaldo, después nos vamos a exportar y continuar, nos genera un archivo SQL el cual se descargara en el destino que se eliga
Para importar/levantar la base datos nos vamos a importar elegimos la base de datos y nos vamos al menú importar, elegimos el archivo y le damos continuar

También podemos generar respaldos y levantarlos desde HeidiSQL

Primero le damos click derecho a la base de datos que queremos realizar el respaldo y seleccionamos Exportar Base de datos como SQL
Le ponemos el nombre y ubicación a la base de datos que queremos crear y elegimos si deseamos crear la base de datos y si existe suprimirla para volverla crear, al darle exportar generar el archivo en la ruta elegida
Para levantar la base de datos desde HeidiSQL nomas nos vamos al menú Archivo y seleccionamos Ejecutar archivo SQL
Seleccionamos el archivo SQL y le damos Abrir
Nos pregunta si queremos que auto-detecte la codificación del archivo le damos click al boton Si
Y vemos como se genera la base de datos con sus tablas e información

También podemos generar el respaldos desde la consola de comandos

Primero nos posicionamos en la carpeta bin de mysql, en mi caso es la siguiente ruta

cd c:\xampp\mysql\bin

Ahora ejecutamos el siguiente comando para realizar el respaldo

mysqldump --opt --events --routines --triggers --default-character-set=utf8 -u root pos > c:\respaldo\respaldo.sql

En caso de requerir contraseña solo agregamos –password CONTRASEÑA

Para levantar la base de datos primero la creamos con el siguiente comando

/opt/lampp/bin/mysql -u root -e "CREATE SCHEMA pos DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci ;"

Luego levantamos la base de datos con el siguiente comando

mysql -u root pos < c:\respaldo\respaldo.sql

Bien espero que les sirva y en la próxima publicación veremos como comprimir el respaldos y hacer respaldos automáticos

CURSO EXPRESS DE BASE DE DATOS MARIADB 10

Ya hemos terminado el tutorial de programación básica en Visual Basic 2022 Community, ahora vamos a ver una ligera introducción a las base de datos.

En esta serie de tutoriales vamos a dar un curso sobre el gestor de base de datos de código abierto mas extendido y que viene siendo un estándar en el desarrollo de sistemas web ya que lo van encontrar en la mayoría de los hosting Web y es MariaDB

CURSO MARIADB INTEGRIDAD REFERENCIAL #6

La integridad referencial es propiedad de la base de datos. La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia. La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.

Todas las bases de datos relacionales gozan de esta propiedad gracias a que el software gestor de base de datos vela por su cumplimiento. En cambio, las bases de datos jerárquicas requieren que los programadores se aseguren de mantener tal propiedad en sus programas.

Ejemplo: Cómo funciona

Supongamos una base de datos con las entidades Persona y Factura. Toda factura corresponde a una persona y solamente una. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.

Supongamos que una persona se identifica por su atributo RFC(Registro Federal del Contribuyente). También tendrá otros atributos como el nombre y la dirección. La entidad Factura debe tener un atributo RFC_cliente que identifique a quién pertenece la factura.

Por sentido común es evidente que todo valor de RFC Cliente debe corresponder con algún valor existente del atributo RFC de la entidad Persona. Esta es la idea intuitiva de la integridad referencial.

Por ejemplo vamos a relacionar un id de cliente con la información de la tabla factura

Creamos la tabla cliente

CREATE TABLE `clientes` ( `id` INT NOT NULL AUTO_INCREMENT , `nombres` VARCHAR(128) NULL , `RFC` VARCHAR(16) NULL , `direccion` VARCHAR(16) NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

Luego Creamos la tabla ventas

CREATE TABLE `ventas` ( `id` INT NOT NULL AUTO_INCREMENT , `idCliente` INT NULL , `Concepto` VARCHAR(128) NULL , `total` DECIMAL(18,2) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

Agregamos la restricción para que al eliminar un cliente no permita eliminar si este cliente ya tiene una venta

ALTER TABLE `ventas` ADD CONSTRAINT `rstCliente` FOREIGN KEY (`idCliente`) REFERENCES `clientes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

Insertamos datos en la tabla cliente

INSERT INTO `clientes` (`id`, `nombres`, `RFC`, `direccion`) VALUES (NULL, 'Julio', 'xxx', 'conocido'), (NULL, 'kakaroto', 'xxe', 'vegita');

Insertamos en la tabla ventas

INSERT INTO `ventas` (`id`, `idCliente`, `Concepto`, `total`) VALUES (NULL, '1', 'venta de equipo de computo', '10000'), (NULL, '2', 'Venta de semillas del hermitaño', '5')

Ahora intentamos eliminar el cliente kakaroto

delete from clientes where id=2

Si hicimos las cosas bien la base de datos se protegerá y no se podrá eliminar el cliente por la restricción de llave foránea, saldrá el siguiente mensaje

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`pos`.`ventas`, CONSTRAINT `rstCliente` FOREIGN KEY (`idCliente`) REFERENCES `clientes` (`id`))

CURSO MARIADB 10 – INSERTAR DATOS DESDE EL SELECT Y TABLAS TEMPORALES #5

Y bien ya vimos algunos comandos básicos en este video veremos como hacer inserción de datos a una tabla mediante la mezcla de un query select e insert, también veremos como crear tablas temporales

Suponiendo que tenemos las tablas usuarios y usuarios2 y tienen los mismos datos insertaremos los datos de usuarios2 a usuarios1, además que usuarios esta vacía

insert into usuarios
select * from usuarios2

Para crear tablas temporales a partir de otra tabla hacemos lo siguiente

create temporary table tmpUsuarios 
select * from usuarios2

También podemos crear una tabla normal a partir del select * from a otra tabla

create table tablaUsuarios3
select * from usuarios2

CURSO MARIADB – CREAR BASE DE DATOS, CREAR TABLA E INSERSIÓN Y MODIFICIACION DE DATOS #4

Y ya empezamos con lo cotidiano, crear base de datos, crear tablas, insertar datos, modificar datos y además vemos como también se utiliza otra herramienta visual para el manejo de la base de datos que es PHPMYADMIN

Para crear una base de datos utilizamos el siguiente comando, le ponemos create database seguido del nombre seguido de la intercalación

CREATE DATABASE `pos` /*!40100 COLLATE 'utf8mb3_spanish2_ci' */

Ahora para crear tabla por ejemplo tabla perfiles de dos columnas id y descripción donde id va a ser primario y autoincrementadle

CREATE TABLE `perfiles` (
	`id` BIGINT NOT NULL AUTO_INCREMENT,
	`descripcion` VARCHAR(256) NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8mb3_spanish2_ci'

Ahora para insertar datos por ejemplo insertamos solo la descripción con el siguiente comando

INSERT INTO perfiles (descripcion) values ('Gerencia')

Podemos meter también manualmente el campo id

INSERT INTO perfiles (id,descripcion) VALUES ('3','')

Como se nos olvido poner la descripción del perfil vamos actualizar ese valor

UPDATE perfiles SET descripcion = 'CONTABILIDAD' WHERE id = 3

Si queremos eliminar el registro 3 simplemente escribimos el siguiente codigo

DELETE FROM perfiles WHERE id = 1
Video Demostrativo

Página 17 de 139

Creado con WordPress & Tema de Anders Norén