# Desarrollo
# Habilitar código fuente del ERP en una PC (antiguo)
#### **Solución SabioGo en VS2019**
1- clonar repo `https://github.com/Sabio-Go/erp.git`
2- Instalar EPSON OCX desde `https://files.sabiogo.com/installer/OCXFiscal.zip`
3- Copiar a `C:\Windows\SysWOW64` el .ocx y los otros archivos que estan en Componentes/hasar
4- Ejecutar un CMD como Administrador, hacer `cd C:\Windows\SysWOW64` y hacer `regsvr32 Fiscal150423.Ocx`
5- Ir al Visual Studio, y en BaseForms, botón derecho en Referencias, Agregar referencias, y referenciar la DLL de Hasar de SysWOW64, y el OCX instalado desde `C:\Program Files (x86)\OCX Fiscal\IFEpson.ocx`
6-instalar git para windows y tortoise git
7-instalr consola nueva ibexpert [https://drive.google.com/file/d/1L7lZDiQNMbAFOQiGD5KcWYJy6Efv0Ikg/view?usp=sharing](https://drive.google.com/file/d/1L7lZDiQNMbAFOQiGD5KcWYJy6Efv0Ikg/view?usp=sharing)
8-bases de prueba [https://files.sabiogo.com/archivos/](https://files.sabiogo.com/archivos/)
# Levantar una tienda nueva
1. Acceder al Caddyfile en `/docker/caddy/Caddyfile` y crear un nuevo bloque con la info de la tienda nueva
2. En Cloudflare, si depende de nosotros, crear el dominio, sino tener el DNS a mano.
3. Copiar una tienda nueva de una existente en `/docker`
4. Modificar `/docker/tienda-nueva/appsettings.json` para apuntar a la nueva base
5. Modificar `/docker/tienda-nueva/docker-compose.yml` para apuntar a las nuevas IPs, nuevos dominios e imágenes Docker.
6. En Putty dirigirse al directorio de la tienda nueva, bajar las imágenes y recrearlas.
# Soluciones del ERP
En el repositorio del ERP encontramos tres soluciones:
- Sabio Go
- B2B
- API
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688992779788.png)
Cada solucion tiene un conjunto de proyectos. Sabio Go es una solcion de Windows Forms, en Net 4.6
Contiene el back end del sistema, que esta realizado en NET STANDAR 2.0. Al generar librerias bajo este stardar el sistema se puede compilar para multiplataformas y es compatible con todas las versiones del framework.
Gracias a esto el B2B, realizado en .NET 6 utiliza el mismo back end , asi también como la API con .NET 6.
En un mismo repositorio tenemos tres soluciones que utilizan el mismo back end, es decir que utilizan los mismos casos de uso del Sabio.
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688779082061.png)
# Manejo de Repositorio de Código Fuente
Como primera medida nos logueamos a Git Hub (o a otro manejador de repositorios) con nuestro usuario
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688994561450.png)
En la rama TESTING se suben los cambios de la versión TESTING. para hacer pruebas particulares a veces conviene realizarlos en
una rama diferente para no causar algún cambio no deseado en la rama TESTING
Siempre antes de comenzar a trabajar hay que hacer un FETCH y bajar a tu repositorio los cambios hechos por los demás
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688994720559.png)
En Changes vemos los cambios realizados por nosotros. En History podemos ve los últimos cambios realizados por los demás. Cada vez que se compile se obtiene la misma versión en cada solución. Se compilan todas
Vemos la ubicación del repositorio
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688995065846.png)
Vemos los proyectos divididos en tres soluciones: API, B2B y MainSabioGO. Todas tienen el mismo back end realizado en NET STANDAR
Abrimos Visual Studio 2022. Cargamos la libreria externa WISEJ desde Nugget. La primera vez que se carga la solucion puede demorar
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998403932.png)
En este caso cargamos la solución B2B, con sus trece proyectos. El que esta en negrita es el inicial
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998485712.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998555611.png)
Si desplegamos este proyecto vemos tres clases: LoginPage que es la pagina de login principal, la primera que se ejecuta.
Tambien observamos dos archivos: el Default.html
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998749335.png)
y el Default.json. El json no se guarda en el repositorio porque ese archivo depende del equipo en el que se este ejecutando, ya que tiene datos de la conexion con la base entre otras cosas. Pero se debe ubicar en la misma carpeta
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689001077105.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998851052.png)
El Default.json contiene la url del deafult.html. Luego indicamos el 'startup', que en este caso seria el program. main de inicio. Este programa contiene un main, inicializa el entorno, define un par de variables que indican que aplicacion esta informando los logs.
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688998996319.png)
En SysInfo cargamos quien esta informando los logs, si la aplicacion Web, la de escritorio, la API, etc.
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688999154664.png)
La función GetPage se fija si ya esta abierta en memoria la pagina, en ese caso no la vuelve a crear. Esto permite no abrir tantas sesiones al mismo tiempo. Si ya esta creada se llama al método Iniciar,
En el json, en la sección 'Settings' cargamos un titulo, logo, una descripción, tipos de cuentas que puede aceptar, etc. parámetros que son propios de esa aplicación que se activaran al momento del despliegue
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688999535748.png)
Al momento de conectarse a la base, se puede configurar una o varias bases, que se identificarán por un alias
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1688999649849.png)
Guardamos los datos del json, luego ejecutamos la aplicación. (La primera vez tarda)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689001398428.png)
La primera vez que se ingresa la clave se valida. El usuario debe tener cargado un mail en la base de datos, en la tabla usuarios. Si ingresamos como cliente, el mail debe estar cargado en la tabla cuentas. Si entra como vendedor, el mail debe estar en la tabla vendedores.
Para completar esos datos entramos a la version de escritorio y cargamos los datos del mail en el usuario (para esta prueba)
El cliente y el vendedor tiene los permisos del usuario Cliente web y Vendedor Web para los casos de uso.
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689001869275.png)
En el archivo schema.xml se guardan los datos de la ultima versión de la estructura de los datos. Se encuentra en la raíz de las soluciones. Ese archivo se puede copiar en el BIN->Debug de la solucion para actualizarla
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689002546150.png)
Luego se verifica la estructura de la base y se repara
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689003779230.png)
Entramos a la base de datos y completamos los datos del usuario
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689003917975.png)
Una vez cargado el dato ejecutamos la solución B2B. Nos figura el mail al cargar el nombre de usuario, y se nos envía por mail un código
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689004116884.png)
Finalmente ingresamos al sistema B2B
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689005489458.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689005513274.png)
Wisej Tiene los controles creados en memoria del lado del servidor y en java script del lado del browser, y tiene una comunicación a través de Web Socket, una tecnología que soporta a los navegadores. Para ver dos veces abierto un caso de uso se abre otra solapa en el navegador.
El proyecto BaseControl tiene los controles ya diseñados. BasePage tiene la pagina y BasePanel contiene los controles para cada caso de uso. Por cada nuevo caso de uso creamos un Panel
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689009779461.png)
POr ejemplo, entramos a un panel. Es muy util, en el cuadro de herramientas el esquema del documento
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689010993035.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689011332041.png)
Para agregar un nuevo panel, vamos a la solución y agregamos un nuevo elemento
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012295665.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012393825.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012485602.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012568593.png)
Este control hereda de BasePanel, y alli comenzamos a acomodar los demas controles, creando el Layout de modo tal que sea Responsivo
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012846480.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689012996924.png)
Una vez creado el panel, creamos el caso de uso. Alli cargamos en formula (lo hacemos en el sabio de escritorio porque aun no esta terminado el abm de casos de uso en B2B)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689013141672.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689013289508.png)
Acomodamos la ubicacion del panel
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689013403324.png)
Al ejecutar el caso de uso, ubicado en Dto X Vta se muestra en el navegador
El esta ubicacion se graba los cambios realizados en la base con su codigo en SQL
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689013652996.png)
En el caso de que el usuario solo tenga permiso para los casos de uso de Gestión de pedidos, lo otros casos de uso no figuran y se acomoda la jerarquía solo para los que si tiene acceso
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689013859594.png)
Mientras vemos el layout de un panel, veremos solo lo siguiente:
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689014851009.png)
Es el codigo lo que completa las funcionalidades del caso de uso
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689014935122.png)
Por ejemplo hacemos lo siguiente para configurar los filtros
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689015054154.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689015121309.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689015141123.png)
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689014979030.png)
Para crear una nueva rama del repositorio vamos a Current Branch y presionamos New Branch
[](https://docs.sabiogo.com/uploads/images/gallery/2023-07/image-1689015459669.png)
lo ideal es hacer un merge en la rama que utilizamos desde la testing antes de hacer un merge en testing