Ya vimos lo del catalogo de descuentos, ahora falta ver como usarlos en las cotizaciones.



Ya vimos lo del catalogo de descuentos, ahora falta ver como usarlos en las cotizaciones.



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
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
Y listo, todo el sistema operativo se copiara tal cual con todo y particiones

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
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.
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
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">
Ahora crearemos el archivo donde estará el modal en la carpeta /ventasModulos

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



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




Y bien ya tenemos nuestro código fuente terminado, ahora lo que sigue poder distribuir nuestro programa para ello vamos a crear el ejecutable a continuación mostramos como hacerlo
Primero Elegimos una carpeta fácil de ubicar, por ejemplo, nosotros crearnos una carpeta llamada resultado en el escritorio.
En visual Studio 2022 Community, en el proyecto nos vamos al menú compilar y después elegimos publicar, nos saldrá la siguiente ventana.






Saludos en el proximo video veremos como subir nuestro proyecto a source forge
Ya vimos como generar el texto del modelo, vista y controlador tomando en base solo una tabla de MariaDB/MySQL tomando las columnas y campos con llave primaria, ahora lo que nos falta por hacer es guardar esa información en archivos .PHP en el proyecto para ello simplemente hacemos lo siguiente.
Primero guardamos en registro de windows la ruta para que se valla quedando guardando como default, esto lo hacemos al darle click al botón aceptar.

Lo hacemos con el siguiente código
'Guardamos en el registro de windows la variable de txtTabla
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Me.txtRuta.Text)Luego en el evento load de la ventana creador de cátalogo agregamos para leer la variable donde guardamos la ruta del registro de windows
'Leemos la variable por default de la ruta desde el registro de windows
If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Nothing) Is Nothing Then
Me.txtRuta.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Nothing).ToString()
End If
Ya por ultimo grabamos los textos en los archivos correspondientes, es importante usar la codificación ASCII para evitar errores en el ajax
'GUARDAMOS LOS ARCHIVOS
'GUARDAMOS MODELO EN EL ARCHIVO
My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/modelos/" & txtTabla.Text & ".modelo.php", strModelo, False, System.Text.Encoding.ASCII)
'GUARDAMOS CONTROLADOR EN EL ARCHIVO
My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/controladores/" & txtTabla.Text & ".controlador.php", strControlador, False, System.Text.Encoding.ASCII)
'GUARDAMOS VISTA EN EL ARCHIVO
My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/vistas/modulos/" & txtTabla.Text & ".php", strVista, False, System.Text.Encoding.ASCII)Y listo ya con esto nos debe crear los archivos
Solo tendremos que crear manualmente el menú y agregar en plantilla.php para que corra la visa
Saludos en el próximo video veremos como subir el proyecto para que lo puedan descargar
Ya vimos como crear el modelo, dijimos que mostraremos como crear el archivo de modelo, pero mejor mostraremos como generar el texto del controlador en base a los campos de la tabla, es un poco mas fácil
a continuación les dejo el código fuente
Imports System.Windows.Forms
Public Class frmCreaCatalogo
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Dim strModelo As String
Dim strControlador As String
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Me.txtTabla.Text)
strModelo = crearModelo.generaModelo()
strControlador = crearControlador.generaControlador()
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Private Sub btnRuta_Click(sender As Object, e As EventArgs) Handles btnRuta.Click
dlgRuta.ShowDialog()
txtRuta.Text = dlgRuta.SelectedPath
End Sub
Private Sub frmCreaCatalogo_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Nothing) Is Nothing Then
Me.txtTabla.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Nothing).ToString()
End If
End Sub
End Class
Saludos y espero que les sirva
Hasta este punto ya hemos creado la conexión con una cadena de conexión directa en la cual nosotros ponemos los datos de conexión a la base de de datos directamente, pero sabemos que la conexión del servidor, la base de datos, el usuario y la contraseña pueden estar cambiando, entonces mostraremos como tener una conexión dinámica basada en nuestras variables de configuración guardadas en el registro de Windows.
Nuestro código en el modulo crearModelo quedaría de la siguiente forma.
'IMPORTAMOS LAS LIBRERIAS NECESARIAS PARA LA CONEXIÓN A MYSQL/MARIADB
Imports MySqlConnector.MySqlConnection
'EMPIEZA EL MODULO
Module crearModelo
' CON PUBLIC SUB CREAMOS PROCEDIMIENTOS
Public Sub generaModelo()
' VARIABLES PARA LA CONEXIÓN
Dim strServidor As String
Dim strBaseDeDatos As String
Dim strUsuario As String
Dim strContra As String
'OBTENEMOS LOS DATOS DE CONFIGURACIÖN DEL REGISTRO DE WINDOWS PREVIAMENTE GUARDADAS
If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing) Is Nothing Then
strServidor = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing).ToString()
strBaseDeDatos = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Nothing).ToString()
strUsuario = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Nothing).ToString()
strContra = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Nothing).ToString()
Else
MsgBox("No se han capturado la conexión a la base de datos")
Return
End If
' METEMOS LA CADENA DE CONEXIÓN EN UNA VARIABLE
Dim cadenaConexion = "Server=" & strServidor & ";User ID=" & strUsuario & ";Password=" & strContra & ";Database=" & strBaseDeDatos
' CREAMOS LA CONEXIÓN CON LA CADENA DE CONEXIÓN
Dim connection = New MySqlConnector.MySqlConnection(cadenaConexion)
Try
' SI SE ABRE LA CONEXIÓN MANDAMOS MENSAJE
connection.Open()
MsgBox("Conexion Correcta")
Catch ex As Exception
' SI NO SE ABRE LA CONEXIÓN MANDAMOS MENSAJE DE ERROR
MsgBox("ERROR " & ex.Message)
Exit Sub
End Try
End Sub
End Module


Ya vimos como llamar ventanas para ponerlas en la ventana principal, lo que haremos en esta publicación será como guardar la configuración de la base de datos.
Para ello vamos a crear una ventana llamada configuración y vamos a crear los campos de texto necesarios como que son los siguientes:
Primero nos creamos la ventana nueva de configuración

Igual lo vamos a lanzar desde el menú configuración y desde el botón abrir
Además para el menú salir agregamos el siguiente código
Me.Close()
Entonces en el load de la porfa agregamos el siguiente código, lo que hace es leer el registro de Windows donde estaremos guardando los datos de conexión
If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing) Is Nothing Then
Me.txtServidor.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing).ToString()
Me.txtBaseDeDatos.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Nothing).ToString()
Me.txtUsuario.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Nothing).ToString()
Me.txtContra.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Nothing).ToString()
End If
Ahora para grabar el los valores que escribimos en los controles ponemos el siguiente código en el evento click del botón aceptar
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Me.txtServidor.Text)
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Me.txtBaseDeDatos.Text)
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Me.txtUsuario.Text)
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Me.txtContra.Text)

En la próxima publicación veremos como hacer la conexión a la base de datos de MySQL
Creado con WordPress & Tema de Anders Norén