Ambientación local de ambiente de desarrollo Farmax OR - Guias de instalación
Guias de instalación
Objetivo
El objetivo de este documento es detallar una guía para el aprovisionamiento de un ambiente local de Farmax-OR, con el fin de que los desarrolladores cuenten con una referencia para tener un ambiente de desarrollo con el cual puedan realizar la tareas de nuevos requerimientos o proporcionar soporte sobre las incidencias reportadas.
Audiencia
Este documento va dirigido principalmente a los integrantes del equipo de desarrollo pero también al equipo de soporte y arquitectura que estén interesados en entender la manera en la que se puede tener un ambiente propio para los fines de desarrollar nuevos requerimientos o incluso solo para el entendimiento del sistema.
Alcance
Este documento contempla la instalación de los principales componentes del punto de venta:
Prerrequisitos
Hardware
Se recomienda tener una máquina con las siguientes características:
RAM: 8g RAM o superior
Procesador: I5 o superior
Pantalla: Con una resolución con al menos 1024 x 768, pero se recomienda 1920 x 1080
Disco: Disco de estado sólido de 512 G
Software
Win 10 Pro (x64)
SQL server 2012 developer edition sp4
PostSharp 4.1.10 express
Visual studio comunity
Instalar WCF
NetFramework 4.5
JetBrains Rider
Git (https://git-scm.com/download/win)
Internet Information services (característica recomendada de windows)
Microsoft Message Queue Server (característica recomendada de windows)
Herramientas adicionales recomendadas
NotePad ++
WinRar
Beyond compare
FreeCommander
SQL server Management Studio 19
Fiddler Classic
SOAPUI
Postman
Jetbrains DataGrip
Bases de datos para aplicativos
Para estandarizar durante la instalación se debe configurar el collation como Modern_Spanish_100 Accent-sensitive por ejemplo:
Además se debe habilitar la autenticación mixta, así como colocar al usuario sa el password adm1n
Se debe habilitar los protocolos Named Pipes y TCP/IP, mediante la herramienta SQL server Configuration manager
Por último se debe importar el respaldo de cada una se las bases de datos con la herramienta SQL server management studio, los archivos están comprimidos por lo que se deben descomprimir primero.
Aplicativos
Para tener un ambiente local corriendo el punto de venta, es necesario descargar el código fuente de la aplicación, lo cual logramos clonando el repositorio, lo cual logramos ejecutando el siguiente comando en powershell o en cmd
Descargar libs/Bin.zip que viene dentro de las carpetas que acompañan a este documento, descomprimir el el archivo Bin.zip y su contenido colocarlo en pos-or\Farmax\Bin
El archivo Bin.zip contiene lo siguiente:
El contenido del archivo Bin.zip debe quedar depositado en pos-or\Farmax\Bin
Se debe importar el archivo libs/hna_fda_farmax_posld.reg que viene junto con este documento, lo anterior dando doble click sobre el archivo.
Además es posible que no se encuentren todos lo dll en la carpeta BIN, esto debido a que si para el momento que se está montando el ambiente, ya se aplicó el merge al main que incluye uso de nuggets, entonces se necesitará instalar nuget y dar de alta el repositorio de farmacias, dicho procedimiento viene descrito en Instalar Nuget y Agregar repositorio Nuget Farmacias del Ahorro GitLab
Aplicar los procedimientos anteriores si se llega a un error de compilación por falta de referencias
Servicios webCentrales
1.- Abrir la solución pos-or\Farmax\Src\POS\POS.Services.sln con Jetbrains Rider
2.- Compilar la solución completa:
Probablemente aparezca la pantalla de postsharp, si es el caso seleccionar “Ask me later”
3.- Reemplazar el archivo pos-or\Farmax\Src\POS\Services.Host\Web.config por pos-or\Farmax\Src\POS\Services.Host\Web.local.config
4.- Correr el proyecto Pos.Services.Host:
Servicios de caja
Dado que este proyecto se encuentra en la misma solución (pos-or\Farmax\Src\POS\POS.Services.sln) que los webCentrales ya no es necesario volver a abrirlo.
1.- reemplazar pos-or\Farmax\Src\POS\Win.Services.TillHost\Program.cs por libs\Program.cs este último viene junto con éste documento
2.- Colocar como argumento de ejecución “console”
3.- Correr el proyecto Win.Services.TillHost
Front-End POS
Esta es la solución que contiene la vista del punto de venta, para levantar la interfaz es necesario que los servicios de caja y los webCentrales se encuentren corriendo, dicho proceso se describió arriba.
1.- Abrir la solución pos-or\Farmax\Src\POS\POS.Win.sln
2.- Compilar la solución
3.- Correr el proyecto Win.Main
4.- Usar los siguientes datos usuario: c31 y pass: 123
Cuando se esté firmado al sistema y éste pida corte, aplicarlo, si después de eso dice que el turno está obsoleto, esto se corrige adecuando la fechaProgramadaDeCierre con una fecha posterior a hoy en la base de datos POSDB_local. Por ejemplo si hoy es 29 de julio del 2023, el siguiente update corregiría el problema
BackOffice
Abir la solución pos-or\Farmax\Src\BackOffice\FAhorro.BackOffice.sln con Rider y compilarla completa
Después sustituir el archivo pos-or\Farmax\Src\BackOffice\BackOffice\Web.config por pos-or\Farmax\Src\BackOffice\BackOffice\Web.local.config
Antes de proceder a levantar el aplicativo backoffice es necesario que el servicio Pos.Services.Host esté arriba.
Levantamos el backoffice de la siguiente manera:
Abrimos el browser la ruta:
usar las credenciales usuario:administrador y password:123
Servicios Centrales
Abrir la con Rider la solución pos-or\AnxoFARMAX\DEV_SOLUTION.sln
Aquí hay varios proyectos importantes, para el alcance de este documento solo se mostrará como compilar la solución.
Central Services
Este proyecto forma parte de la solución Dev_Solucion y para este punto ya debería estar compilado. Este el principal proyecto que interopera con el store, bd central y STG, por lo que es necesario aprovisionar la base de sql server que funge como central (FARMAX_CENTRAL), la cual se aprovisionó en la sección Base de Datos , además es necesario instalar una base de datos Oracle Express Edition en la que se montará la estructura del STG.
Para la instalación y aprovisionamiento de la base STG primero debemos instalar Oracle Express el cual podemos descargar de sofware/OracleXE213_Win64.zip
Ejecutar el archivo setup.exe
Cuando el instalador pida la contraseña a usar para sys o system colocar adm1n
Al finalizar la instalación debe aparecer algo como lo siguiente:
Se procede a verificar la conexión usando system como usuario y adm1n como password
e procede a conectarse a la base de datos oracle express (jdbc:oracle:thin:@//localhost:1521/XEPDB1) y una vez ahí ejecutamos el siguiente script ddl.sql dicho script generará la estructura de la base STG
El servicio central requiere de una conexión a la base de datos de ld (POSDB) la cual debe estar montada en el sqlserver local (ver sección Base de Datos), para ello es necesario importar el respaldo respaldosbds/posdb_hna_ld_100723.rar
Despues de tener las instancias de base de datos necesarias, se debe ubicar en el proyecto pos-or\AnxoFARMAX\CentralService\DEV_CentralService.csproj
Se debe sustituir el archivo local pos-or\AnxoFARMAX\CentralService\Program.cs por el archivo libs\central_services\Program.cs
Se debe aplicar el siguiente script en la base de datos FARMAX_CENTRAL la cual se encuentra en el sqlserver local
add appToken uniqueidentifier
go
Se debe sustituir el archivo pos-or\AnxoFARMAX\CentralService\App.config por el archivo pos-or\AnxoFARMAX\CentralService\App_local.config
Por último se debe correr el proyecto DEV_CentralService pero con el argumento console
FarmaxStoreWeb
Esta es una aplicación auxiliar que realiza operaciones como cortes de caja, y da unos reportes asociados al store.
Para poder correr este proyecto primero debemos dirigirnos a pos-or\AnxoFARMAX\FarmaxStoreWeb\FarmaxStoreWeb.csproj
Despues sustituir el archivo por-or\AnxoFARMAX\FarmaxStoreWeb\Web.config por por-or\AnxoFARMAX\FarmaxStoreWeb\Web.local.config para esto se debe realizar un fetch o pull de git en caso de que no se tenga.
Antes de proceder a levantar el aplicativo FarmaxSToreWeb es necesario que el servicio Pos.Services.Host esté arriba.
Por último se procede a levantar el aplicativo FarmaxSToreWeb
Se abrirá la siguiente pantalla
Para ingresar se debe usar el usuario c31 y el password 123
CentralServiceReport
Este es el servicio central que esté a la espera de la solicitudes realizadas por backoffice para la ejecución de reportes mediante una tabla de solicitudes(rptReporteSolicitudEjecucion).
Para levantar este proyecto se debe dirigir a pos-or\AnxoFARMAX\CentralServiceReport\CentralServiceReport.csproj
Reemplazar el archivo pos-or\AnxoFARMAX\CentralServiceReport\App.config por pos-or\AnxoFARMAX\CentralServiceReport\App.local.config
dentro del archivo App.local.config ajustar la variable CONFIG_REPORT_SERVICE_DIRECTORY acorde al lugar donde se encuentre el directorio de configuración de reportes. Dicho directorio reside bajo el mismo directorio donde se clonó el repositorio, por ejemplo:
Se debe correr el proyecto con el argumento console
Cuando haya corrido ingresar la palabra start en el prompt y teclear enter
Esto iniciará el servicio
y con esto el servicio ya está a la espera de solicitudes del backoffice local
SadWebServices
Este es el servicio central expone el api el manejo de servicio a domicilio, por ejemplo expone servicios de manejo de órdenes, notificaciones adyen, etc.
En esencia este proyecto contiene un conjunto de servicios tipo rest. El proyecto se encuentra en pos-or\AnxoFARMAX\SadWebServices\SadWebServices.csproj que forma parte de la solución DEV_SOLUTION
Para ejecutar este servicios es necesario reemplazar el archivo pos-or\AnxoFARMAX\SadWebServices\Web.config por el archivo pos-or\AnxoFARMAX\SadWebServices\Web.local.config
Si el archivo Web.local.config no se encuentra, será necesario descargar los ultimos cambios con un pull o un fetch
Además se requiere que el servicio Pos.Services.Host esté arriba.
Después se procede a ejecutar el proyecto de SadWebServices
Cuando el servicio levante, se aparecerá la siguiente pantalla
Si le damos click a API debe aparecer:
LabWebServices
Este es el servicio central que expone un servicio rest de cara a ROCHE para el procesamiento de órdenes de laboratorio.
Para ejecutar el servicio se debe reemplazar el archivo pos-or\AnxoFARMAX\LabWebServices\Web.config por el archivo pos-or\AnxoFARMAX\LabWebServices\Web.local.config
Si el archivo Web.local.config no se encuentra, será necesario descargar los ultimos cambios con un pull o un fetch
Ejecutar el proyecto
Deberá abrirse la siguiente pantalla
si le damos click API debe aparecer:
RTLog
Este es el proyecto que se encarga de transferir los datos de las tablas intermedias generadas en el store y que contienen la información de ventas, factura global, etc.
Las tablas intermedias se generan en store, se suben a central y este proyecto las traslada al STG.
Este proyecto se encuentra dentro de la solución DEV_SOLUTION en pos-or\AnxoFARMAX\CentralServiceRtlog\CentralServiceRtlog.csproj
Para poder ejecutarlo se asume que la base de datos Oracle Express se encuentra instalada como se detalla en Servicios Centrales, y por su puesto las bases de datos aprovisionadas estén acorde a Bases de datos para aplicativos.
Despues se debe se debe reemplazar el archivo pos-or\AnxoFARMAX\CentralServiceRtlog\App.config por el archivo pos-or\AnxoFARMAX\CentralServiceRtlog\App.local.config
Tener como argumento de ejecución “console”
Ejecutar el proyecto
Y teclear la palabra start en el prompt de la parte inferior y teclear enter
Archive
Este proyecto es el encargado de transferir los datos de una base a otra (central->archive) realizando un proceso de purga de la central y de esta manera teniendo solo un periodo de tiempo los datos de la central y los datos históricos se mantendrán en la base de datos archive, además de ir sincronizando los datos nuevos que lleguen a central y clonarlos al archive. Es un proyecto de auto depuración de datos en la base de datos central.
Para poder ejecutar este proyecto, es necesario montar el respaldo de la base FARMAX_CENTRAL pero destinando a una nueva base de datos a la cual llamaremos FARMAX_ARCHIVE
Para evitar conflictos con los archivos de data y log de la base FARMAX_CENTRAL que ya se tiene, es necesario adaptar los valores para que apunten a un nuevo path, y de esta manera ejecutar el respaldo
Al realizar el procedimiento anterior la base de datos FARMAX_CENTRAL, quedará en un estado inaccesible, para sacarla de ese estado basta realizar el respaldo que está solicitando, y sin mover ningun parametro ejecutar el respaldo.
Despues se debe aplicar el siguiente script en la base de datos FARMAX_CENTRAL
Despues aplicar el siguiente script tanto en la base FARMAX_CENTRAL como en FARMAX_ARCHIVE
Es necesario cambiarle la extencion a dos de los archivos de configuración de archive para evitar conflictos, los cuales se encuentran en pos-or\AnxoFARMAx\DEV_ArchiveConfiguration y los archivos en cuestión son ARCHIVE_PURGE_TILL.xml y ARCHIVE_PURGE_STORE.xml
Se debe colocar en el argumento de ejecución “console”
Se debe reemplazar el archivo pos-or\AnxoFARMAX\CentralServiceArchive\App.config por el archivo pos-or\AnxoFARMAX\CentralServiceArchive\App.local.config
Ejecutar el proyecto y en la esquina inferior izquierda, aparecerá un promt en el cual escribimos start esto hará que se inicie el proceso de archive.
Posibles errores y solución
Error (MSB3644 ) por mal referencia a .NETFramework 4.5
En caso de que se se presente el siguiente error:
Microsoft.Common.CurrentVersion.targets(1241,5): Error MSB3644 : No se encuentran los ensamblados de referencia para .NETFramework,Version=v4.5. Para resolver este problema, instale el Paquete de desarrollador (SDK o Paquete de compatibilidad) de esta versión de .NET Framework o redestine la aplicación. Para descargar los paquetes de desarrollador de .NET Framework, vaya a https://aka.ms/msbuild/developerpacks
Aplicar la siguiente solución:
Ir a https://www.nuget.org/packages/microsoft.netframework.referenceassemblies.net45 y descargar el paquete
renombrar el archivo descargado "microsoft.netframework.referenceassemblies.net45.1.0.3.nupkg" a "microsoft.netframework.referenceassemblies.net45.1.0.3.zip" y extraer
Ir a build\.NETFramework, copiar la carpeta v4.5, pegar en el directorio C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework, reemplazar si es necesario
Instalación WCF
Buscar y abrir el instalador de visual studio community
Modificar para instalar el componente individual de WCF
Cambiar a la pestaña de componentes individuales
Buscar "wcf"
marcar casilla de "Windows Communication Foundation
Aqui el botón dice "Modificar", en este caso dice "cerrar" porque WCF ya se encuentra instalado
Instalar Nuget
https://www.nuget.org/downloads
Descargar nuget.exe
Y colocarlo en el Path de la siguiente manera.
Agregar repositorio Nuget Farmacias del Ahorro GitLab
Correr los siguientes comandos en tu PS.
nuget source Add -Name "GitLabFAhorro" -Source "https://gitlab.com/api/v4/projects/40170153/packages/nuget/index.json" -UserName <your_username> -Password <your_token_Gitlab>
-
ddlSTGLocalhost.sql 14112023_FARMAX_CENTRAL.rar 20231114_FARMAX_Local.rar 20231114_FARMAX_Caja.rar FARMAX_CENTRAL_HNA_OR_210723.rar FARMAX_local_HNA_OR_210723.rar FARMAX_CAJA_HNA_OR_210723.rar...
-
OracleXE213_Win64.zip SW_DVD9_SQL_Svr_Standard_Edtn_2012_English_MLF_X1… PostSharp-4.1.10.exe
-
Bin.zip hna_fda_farmax_posld.reg Program.cs